Laravel/Eloquent - 查询 - 选择关系

pas*_*has 1 php mysql relational-database laravel eloquent

楷模

class Model1 extends Eloquent {
    public function model2() {
        return $this->hasOne('Model2');
    }
}

class Model2 extends Eloquent {
    public function model1() {
        return $this->belongsTo('Model1');
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的查询

我想从所有的情况下Model1都该不会Model2.换言之,没有任何参考该Model1 idModel2表列model1_id.

这可以通过foreach循环实现,迭代所有Model1并检查model2atributte是否为.但我想用Eloquent查询来做.

lag*_*box 6

你可能会尝试类似的东西

Model1::has('model2', '=', 0)->get();
Run Code Online (Sandbox Code Playgroud)

请参阅:Laravel Docs - Eloquent - 查询关系

更新:

Model1::doesntHave('model2')->get();
Run Code Online (Sandbox Code Playgroud)

  • 有关更多信息,请参阅:http://laravel.com/docs/eloquent#querying-relations :) (2认同)