Мне нужна моя модель, чтобы возвращать только те записи из одной таблицы, где соответствующая запись не существует в другой таблице. Я думал, что решение может быть с Query Scope, но документация только царапает поверхность. Поэтому мой SQL выглядел бы примерно так:
SELECT * FROM A WHERE NOT EXISTS (SELECT A_id FROM B WHERE B.A_id = A.id)
Вот мои таблицы:
A ------------- | id | name | ------------- B -------------------- | id | A_id | name | --------------------
Наверное, нет необходимости, но вот мои модели. Модель для A:
class A extends Eloquent{ public function B(){ return $this->hasOne('B', 'A_id', 'id'); } }
Модель для B:
class B extends Eloquent{ public function A(){ return $this->belongsTo('B', 'A_id', 'id'); } }
Что-то вроде
A::whereNotExists(function($query) { $query->select(DB::raw(1)) ->from('B') ->whereRaw('A.id = B.id'); }) ->get();