как использовать предложение WHERE и WITH в Laravel

#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();