Модели
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
.
Това може да се постигне с a foreach
цикъл, итерация на всички Model1
и проверка дали model2
атрибута е нула, Но искам да го направя с красноречиви запитвания.
Отговори:
6 за отговор № 1Може да опитате нещо подобно
Model1::has("model2", "=", 0)->get();
Виж: Ларавел Док - красноречив - Запитващи отношения
Update:
Model1::doesntHave("model2")->get();
1 за отговор № 2
Това може да бъде:
$ids = Model2::where("model1_id", null)->lists("id");
$result = Model1::whereIn("id", $ids)->get();
редактиране:
Трябва да се науча да чета по-добре :) Виждам, че това не е така.
edit2:
Това може да е така. Аз не съм тестван, но ако има грешка, тогава трябва да бъде лесно да се определи! (С помощта на lagbox на IRC канала #laravel)
edit3:
Okey, така че след като го обсъдихме на #laravel с lagbox, има още по-добър начин ... вижте отговора му