Laravel объединяет несколько коллекций в один запрос

Мне интересно, возможно ли это. Имею 3 модели. Пользователи Арендатор PropertyAdverts

Я пытаюсь выяснить, могу ли я сделать такой запрос.

Найдите всех арендаторов, чьи настройки соответствуют свойствам текущего пользователя, вошедшего в систему.

3 базы данных похожи на

Модель пользователя

 Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('userType');
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

PropertyAdverts

Schema::create('property_adverts', function (Blueprint $table) {
            $table->increments('id');
            $table->string("photo");
            $table->string('address');
            $table->string('county');
            $table->string('town');
            $table->string('type');
            $table->string('rent');
            $table->string('date');
            $table->string('bedrooms');
            $table->string('bathrooms');
            $table->string('furnished');
            $table->longText('description');
            $table->integer('user_id'); //Landlord ID
            $table->timestamps();
        });

Предпочтения арендатора

 Schema::create('tenant_preferances', function (Blueprint $table) {
        $table->increments('id');
        $table->string('county');
        $table->string('type');
        $table->string('rent');
        $table->string('bedrooms');
        $table->string('bathrooms');
        $table->boolean('status')->default('0');
        $table->integer('user_id'); //Tenant ID
        $table->timestamps();
    });
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, это возможно. Вам нужно покопаться в связи. Затем вы можете создать функцию для определения отношения в вашей модели:

function propertyAdverts() {
  return $this->hasMany(PropertyAdverts::class);
}

Вы можете получить доступ к отношению из пользовательской модели с помощью $user->propertyAdverts. Если вы хотите загрузить их, вы можете сделать это:

User::with('propertyAdverts')->find(3);

Но обратите внимание, что Laravel по умолчанию не выполняет обычное соединение. Сначала он выбирает всех пользователей, а затем извлекает все propertyAdverts, используя один запрос с помощью оператора in.

Другие вопросы по теме