我有通过belongs_to连接表属于Bars的som Foos。 foo_bar这样的名称。
我有一个bar_ids数组,我想找到所有在bar_id数组中都有bar_id的Foos。
$ Foos = \ App \ Foo :: with(' bar') - > where(' bar_id',$ barIDs) - > get();
这就是我现在正在尝试的。我尝试了几个连接但是还没有能够解决这个简单的问题。
相关的架构:
foo_bar:foo_id,bar_id
这基于:BelongsTo
基本上我的Foo属于酒吧,我的酒吧属于许多Foo
答案 0 :(得分:0)
只需为急切加载查询添加查询约束:
$Foos = \App\Foo::with(['bar' => function ($query) use ($barIDs) {
$query->whereIn('bar_id', $barIDs)
}])
->get();
第二种方法是使用数据透视表foo_bar
加入您的查询:
$Foos = \App\Foo::with('bar')
->select('foo.*')
->join('foo_bar', 'foo_bar.foo_id', '=', 'foo.id')
->whereIn('foo_bar.bar_id', $barIDs)->get();