#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
Ответ №2:
В моделях определите отношения
Модель клиента
public function orders()
{
return $this->hasMany(Orders::class);
}
Модель заказа
public function customer()
{
return $this->belongsTo(ustomer::class, 'foreign Key', 'id');
}
Затем вы можете позвонить в отношения и найти то, что вам нужно
Customer::whereHas('orders')