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