使用短划线

时间:2016-11-29 16:32:43

标签: laravel laravel-5

此:

$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的项目?

2 个答案:

答案 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

如果问题仍然存在,请上传您桌面的一些屏幕截图。