Laravel проверяет более одного параметра на eloquant-отношениях

У меня есть три таблицы, как показано ниже структуры.

Таблица — AccountService

id | service_id| account_id|
----------------------------
1 | 1         | 8181      |
2 | 2         | 8181      |
3 | 3         | 8181      |
4 | 5         | 8181      |

Таблица: — Услуги

 id | Name |
------------
1 | A     |
2 | B     |
3 | C     |
4 | D     |

Таблица: — CompletedService

 id | service_id | account_id
------------------------------
1 | 1           | 8181
2 | 1           | 8182
3 | 1           | 8181
4 | 2           | 8181

Теперь МОИ отношения запрос ниже.

 $acc = AccountService::with(['service' => function($q) {

}])->with(['completedServiceRest' => function($q) {

}])->where('account_id', $account_id)->get();

Как я могу получить записи в части отношений на основе account_id и service_id обоих.
В настоящее время записи отображаются в отношении CompleteSericeRest есть все записи, которые account_id совпадает с таблицей AccountService.

Когда это отношение произойдет, проверьте и service_id, и account_id из завершенного сервиса, а не только account_id.

Ниже отношения в модели.

 public function completedServiceRest() {
return $this->hasMany('App\CompletedService', 'account_id', 'account_id');
}

введите описание изображения здесь

в настоящее время получают все записи идентификатора account_id, соответствующие не на основе обоих параметров, service_id и account_id влияют только на account_id.

Заранее спасибо.

0

Решение

Было бы проще с другой структурой, например, с вашей таблицей «Служба учетных записей» (конечно, по умолчанию будет выполнено 0):

id | service_id | account_id | completed |
------------------------------------------
1 |      1      |    8181    |     0     |
2 |      2      |    8181    |     1     |

Ваше основное отношение будет:

public function accountedServices()
{
return $this->hasMany('App\AccountService', 'account_id', 'account_id');
}

И чтобы проверить ваши завершенные услуги:

public function completedServiceRest()
{
return $services->accountedServices()->where('completed', 1)->get();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector