#php #laravel
#php #laravel
Вопрос:
Я работаю над небольшим проектом, используя laravel
и я хотел бы знать, как я могу использовать WHERE
предложение для apartment
это мой code
$buildings = Building::with('apartment')->get();
я уже пробовал :
$buildings = Building::with('apartment')->where('name','=',5)->get();
но это применимо для здания, а не для квартиры.
как я могу применить предложение WHERE для apartment?
Ответ №1:
Вы можете применить замыкание к with(...)
, если передаете массив, используя следующий синтаксис:
Model::with(['relation_name' => function ($query) { ... }])
В вашем случае то, что вы ищете, это:
$buildings = Building::with(['apartment' => function ($apartments) {
$apartments->where('name', 5); // if you don't pass an operator, it's assumed to be '='.
}])->get();
Вы также можете написать это подобным образом, используя сокращенные замыкания PHP 7.4.
$buildings = Building::with(['apartment' => fn($apartments) => $apartments->where('name', 5)])->get();
https://laravel.com/docs/7.x/eloquent-relationships#constraining-eager-loads
Ответ №2:
Попробуйте это
$buildings = AppBuilding::with(['apartment' => function ($query) {
$query->where('name', 5); .
}])->get();