为什么laravel不在varchar字段上引用数字查询?

问题描述 投票:1回答:1

我有一张表格,其中包含客户供应商的详细信mysql数据库中有一个customer_number字段,定义为varchar长度6.该列有一个索引。

每当我在laravel中搜索一行时,就好像laravel看到搜索条件是所有数字,例如12345所以当它产生一个mysql查询时,它不会在12345左右放置引号。这会导致mysql忽略索引并使用完整的表扫描非常慢。

示例搜索:

$RICPCS = \App\CustomerProductCategorySupplier::get()- 
>where('customer_number', $this->customer->delivery_account_no)- 
>where('category_number', $product->product_category)->first();

Laravel生成以下sql查询描述

select * from `customer_product_category_supplier` 
where `customer_number` = 10626 and `category_number` = 140

一个mysql描述报告:

enter image description here

我希望生成的sql在哪里阅读:描述select * from customer_product_category_supplier其中customer_number ='10626'和category_number ='140'

mysql描述报告:

enter image description here

有任何想法吗?

php laravel pdo eloquent
1个回答
0
投票

您可以使用https://laravel.com/docs/5.8/eloquent-mutators#attribute-casting将列转换为字符串

但我认为将数字存储为int / float等更为明智

© www.soinside.com 2019 - 2024. All rights reserved.