模型
class Model1 extends Eloquent {
public function model2() {
return $this->hasOne('Model2');
}
}
class Model2 extends Eloquent {
public function model1() {
return $this->belongsTo('Model1');
}
}
我想查询
我希望Model1
的所有实例不都有Model2
。换句话说,Model1
表格列id
中没有对Model2
model1_id
的任何引用。
这可以通过foreach
循环来实现,迭代所有Model1
并检查model2
atributte是否 null 。但我想用Eloquent查询来做。
答案 0 :(得分:6)
您可以尝试类似
的内容Model1::has('model2', '=', 0)->get();
请参阅:Laravel Docs - Eloquent - Querying Relations
更新
Model1::doesntHave('model2')->get();
答案 1 :(得分:1)
可能是这样:
$ids = Model2::where('model1_id', null)->lists('id');
$result = Model1::whereIn('id', $ids)->get();
编辑:
我需要学会更好地阅读:)我看到这不是它。
EDIT2:
这可能是它。我还没有测试过它,但是如果有错误则应该很容易修复它! (在IRC频道#laravel的lagbox帮助下)
EDIT3:
Okey,所以在#laravel上用lagbox讨论后,有一个更好的方法......看看他的回答