这是我的代码:
public function getInvoiceOfTransactioncCompleteItems($userid)
{
return $user_invoice =
$this->model->with([
'items.itemStatus' => function($q) {
$q->where('item_statuses_id', '=', '12');
},
'items',
'items.product',
'items.product.user',
'items.rating',
'items.rating_comment'
])
->where('user_id',$userid)
->orderBy('created_at','desc')
->paginate(3);
}
我希望它只给我((''items.itemStatus'=> function($ q){ $ Q-化合物其中( 'item_statuses_id', '=', '12');
但它给了我所有的东西,但items.itemStatus列数组是空的,除了item_statuses_id','=','12'
我不想要其他商品,只想要item_statuses_id','=','12'商品
我的json
https://docs.google.com/document/d/1o_V0MRu1somd3rMuzaCtvVY5twhrIBHYfD_N2Fhw9O8/edit?usp=sharing
我的代码 https://docs.google.com/document/d/1YadZmU0Q_OO5himc8JUsFT6vUcZmG4A3D3OjmsG5VdY/edit?usp=sharing
答案 0 :(得分:0)
你说:
我尝试,但是混淆,为什么或者哪些地方不能这样做
我不是百分百肯定,但我认为当您在with()
上设置条件时,您正在修改子查询,而不是在主查询上添加条件< / strong> - 这有意义吗?
如果您想获得更好的想法,请尝试通过在查询中运行toSql()
来调试您的查询,以便更好地了解正在发生的事情......
$this->model->with([
'items.itemStatus' => function($q) {
$q->where('item_statuses_id', '=', '12');
},
'items',
'items.product',
'items.product.user',
'items.rating',
'items.rating_comment'
])
->where('user_id',$userid)
->orderBy('created_at','desc')
->toSql();
然后看一下SQL输出。
答案 1 :(得分:0)
I try other method
query order table
user->invoice
invoice ->item
item->itemStatus condition status =12
get itemStatus 's item id
Item::with('invoice')->whereIn([])
but how can I reverse
it will be
{
item_id,
invoice:{invoice_id:1}
}
I want be
{
invoice_id,
items:[{item_id:1,item_id:2}]
}
and invoice same will merge