Как выполнить поиск в другой таблице в Laravel с помощью Eloquent?

#php #mysql #laravel #eloquent

Вопрос:

У меня есть две модели:

 Order
Customer
 

У меня customer_id в orders столе. Сведения о клиенте (имя, телефон, электронная почта и т.д.) в customers таблице. Но я пишу запрос для таблицы заказов.

Теперь я хочу выполнить поиск по имени клиента в Заказах, но в таблице Заказов у меня просто есть customer_id .

Как я свяжусь с таблицей клиентов, чтобы я мог выполнять поиск по имени клиента. Я хочу сделать это с Красноречивым.

Как это возможно?

Ответ №1:

Существует несколько способов фильтрации отношений с помощью Eloquent.

Вы можете достичь этого с whereHas помощью или с помощью расширенного запроса на соединение / левое соединение.

Я предлагаю вам провести исследование о красноречивой фильтрации в документации Laravel, там должно быть все, что вам нужно для вашей задачи.

https://laravel.com/docs/8.x/eloquent-relationships#querying-relationship-existence

https://laravel.com/docs/8.x/queries#advanced-join-clauses

Ответ №2:

В моделях определите отношения

Модель клиента

 public function orders()
{
   return $this->hasMany(Orders::class);
}
 

Модель заказа

 public function customer()
{
   return $this->belongsTo(ustomer::class, 'foreign Key', 'id');
}
 

Затем вы можете позвонить в отношения и найти то, что вам нужно
Customer::whereHas('orders')