关系:收据有多个LineItems
$columns = ['rece_id','rece_user_id','rece_name','rece_date']
$builder = Receipt::select($columns)
->with('lineItems')
->where('rece_user_id', Auth::user()->id)
dd($builder->get()->toArray());
上面的代码为我提供了所有相关订单项(所有列)的收据。
我只需要第一个订单项的一列,例如liit_description。 (我需要将其作为$columns
列表中的另一列)。
Eloquent甚至可以这样做吗?
更新
我通过使用DB查询而不是Eloquent来解决它(但我更喜欢Eloquent解决方案,如果有人可以提供帮助的话)
$builder = DB::table('receipts')->select($columns)
->join('line_items', function ($join) {
$join->on('receipts.rece_id', '=', 'line_items.liit_rece_id');
})
->where('rece_user_id', Auth::user()->id)
;
如果可以将其转换为Eloquent查询,那将很有趣。
答案 0 :(得分:0)
$builder = Receipt::with(['lineItems' => function ($query) {
$query->first('liit_description');
}])->where('rece_user_id', '=', Auth::user()->id)->get($columns);
答案 1 :(得分:0)
我通过使用与Eloquent的加入来解决它,令人惊讶的是它有效(没有关于加入Eloquent Doc的内容)
在$ columns数组中添加了liit_description
,并且
$builder = Receipt::select($columns)
->join('line_items', function ($join) {
$join->on('receipts.rece_id', '=', 'line_items.liit_rece_id');
})
->where('rece_user_id', Auth::user()->id)
;