我有一张表格,其中包含客户供应商的详细信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描述报告:
我希望生成的sql在哪里阅读:描述select * from customer_product_category_supplier
其中customer_number
='10626'和category_number
='140'
mysql描述报告:
有任何想法吗?
您可以使用https://laravel.com/docs/5.8/eloquent-mutators#attribute-casting将列转换为字符串
但我认为将数字存储为int / float等更为明智