Laravel 4:哪里不存在

ste*_*y68 7 php mysql laravel eloquent

我需要我的模型只从一个表中返回那些记录在另一个表中不存在的记录.我当时认为解决方案可能与查询范围有关,但文档仅涉及表面.所以我的SQL看起来像这样:

SELECT *
FROM A
WHERE NOT EXISTS (SELECT A_id FROM B
                WHERE B.A_id = A.id)
Run Code Online (Sandbox Code Playgroud)

这是我的表格:

A
-------------
| id | name |
-------------

B
--------------------
| id | A_id | name |
--------------------
Run Code Online (Sandbox Code Playgroud)

可能没必要,但这里是我的模特.A型号:

class A extends Eloquent{

    public function B(){
        return $this->hasOne('B', 'A_id', 'id');
    }
}
Run Code Online (Sandbox Code Playgroud)

B模型:

class B extends Eloquent{

    public function A(){
        return $this->belongsTo('B', 'A_id', 'id');
    }
}
Run Code Online (Sandbox Code Playgroud)

mar*_*nuy 15

就像是

A::whereNotExists(function($query)
            {
                $query->select(DB::raw(1))
                      ->from('B')
                      ->whereRaw('A.id = B.id');
            })
            ->get();
Run Code Online (Sandbox Code Playgroud)