laravel滤波器的关系条件where has和with function has有问题
这是我的代码:laravel滤波器的关系条件where has和with function has有问题,laravel,Laravel,这是我的代码: public function getInvoiceOfTransactioncCompleteItems($userid) { return $user_invoice = $this->model->with([ 'items.itemStatus' => function($q) { $q->where('item_statuses_id', '=', '12'); }, 'items
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'=>函数($q){
$q->where('item_statuses_id','=','12')
但它提供了除items以外的所有内容。itemStatus列数组为空,但item_statuses_id'、'='、'12'除外
我不想要其他物品,只想要物品状态、id、'=',12'物品
我的json
我的代码
你说过:
我试着,但困惑,为什么用或哪里做不到这一点
我不是100%确定,但我认为当您在with()
上放置条件时,您是在修改子查询,而不是在主查询上放置条件,这有意义吗
如果您想获得更好的想法,请尝试通过在查询上运行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输出。
我希望JSON考虑使用一个连接,并在主查询上写一个WHERE条件,而不是使用我尝试,但混淆,为什么有或不能做,我已经写了我的评论作为答案。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