此:
$stockCodes = \DB::connection('sage_accounts')
->table('sales_order_items')
->select('stock_code')
->from('sales_order_items')
->orderBy('stock_code')
->distinct()->get();
返回任何具有RDxxx-xx-H7-xx股票代码格式的股票代码,但格式不正确。正确的格式是RDxxx-Hx-xx-xx。该查询不返回该格式的股票代码。例如,销售订单行项目11649,其库存代码为RD0448-H7-09-28。它不会与剩余的股票代码一起返回,并且:
$stockCodes = \DB::connection('sage_accounts')
->table('sales_order_items')
->select('stock_code')
->from('sales_order_items')
->where('id', 11649)
->orderBy('stock_code')
->distinct()->get();
返回一个空数据集。虽然这个:
select distinct `stock_code` from `sales_order_items`
where `id` = 11649 order by `stock_code` asc
返回正确的数据
为什么查询构建器不会返回股票代码格式为RDBxxxx-Hxx的项目?
答案 0 :(得分:2)
你可以使用这个DB :: select('your_query');
DB::select('select distinct stock_code from sales_order_items
where id = 11649 order by stock_code asc');
答案 1 :(得分:1)
试试这个,
$stockCodes = \DB::connection('sage_accounts')
->table('sales_order_items')
->select('stock_code')
->from('sales_order_items')
->orderBy('stock_code', 'asc')
->distinct()
->get();
击> <击> 撞击>
<强>更新强>
您可以尝试在连接上执行原始sql ,如下所示:
$stockCodes = \DB::connection('sage_accounts')
->select('select distinct stock_code from sales_order_items where id = :id order by stock_code asc', ['id' => 11649]);
如果没有运行反复试验,很难弄清楚查询执行的确切位置。
Listening for query events 可以指出我们的解释。使用
dd
的{{1}} 方法中的AppServiceProvider
功能查看并调试您执行时执行的SQL查询运行select语句 -
boot
如果问题仍然存在,请上传您桌面的一些屏幕截图。