我有一个表格,其中包含客户供应商的详细信息。 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读取的位置:
描述customer_product_category_supplier
中的select *
其中customer_number
='10626'和category_number
='140'
mysql描述报告:
有什么想法吗?
答案 0 :(得分:0)
您可以使用https://laravel.com/docs/5.8/eloquent-mutators#attribute-casting
将列转换为字符串但是我认为将数字存储为int / float等会更聪明