У меня 4 таблицы vendors
, project
, project_quotas
и project_vendors
Структура таблицы:
vendors: id (Primary), name, email
project: id (Primary), name, status
project_quotas: quota_id (Primary), project_id (Foreign Key), quota_name, description
project_vendors: pv_id (Primary), project_id(Foreign Key), vendor_id, spec_quota_ids(comma separated, Foreign Keys), description
Скажем за project_id = 1
Я хочу получить Все квоты проектов и их продавцов
Вот необработанный запрос, который я создал, чтобы получить эти данные:
SELECT
pq.id as pq_id, pq.project_id as project_id, pq.name as pq_name, pv.id as pv_id, pv.vendor_id as pv_vendor_id, pv.spec_quota_ids as quotas
FROM `project_quotas` pq
LEFT JOIN
project_vendors pv ON pv.project_id = 1 AND find_in_set(pq.id, spec_quota_ids) > 0
WHERE pq.project_id = 1
GROUP BY pv.vendor_id, find_in_set(pq.id, spec_quota_ids)
Order BY pq.id
Вот вывод
![Output from this SQL Query](https://i.stack.imgur.com/oVjmT.png)
Единственная проблема заключается в том, что я хочу, чтобы этот запрос выполнялся Eloquent.
У меня есть ProjectQuota, ProjectVendors Model
Я хочу что-то вроде
$data = ProjectQuota::where('project_id', '=', '1')->with('projectVendors', 'projectVendors.Source')->get();
Я не знаю, как я могу создать условные hasMany
отношения в красноречивом, буду благодарен за помощь.