У меня следующая структура базы данных:
// Contacts
,----,------------,------------------,
| id | name | email |
|----|------------|------------------|
| 1 | John Doe | john@example.com |
'----'------------'------------------'
// Jobs
,----,------------,-------------------,
| id | title | description |
|----|------------|-------------------|
| 1 | Fancy Job | This job is fancy |
'----'------------'-------------------'
// JobRequests
,----,------------,------------,----------,
| id | job_id | contact_id | accepted |
|----|------------|------------|----------|
| 1 | 1 | 1 | yes |
| 2 | 1 | 2 | no |
'----'------------'------------'----------'
И я хочу, чтобы все контакты, которые приняли работу.
Я пытался сделать следующее:
$jobs = $this->Jobs
->find('all')
->where(['event_id' => $id])
->contain([
'JobRequests' => [
function(Query $query) {
return $query->where(['JobRequests.accepted' => 'yes']);
},
'Contacts'
]
]);
Но затем я получаю ошибку {{Неподдерживаемые типы операндов}}.И документы на самом деле не говорят, что вы должны делать, если вы хотите условие и содержимое.
Как бы я это сделал?
РЕДАКТИРОВАТЬ: Я хочуданные должны выглядеть так:
Job 1:
Accepted by John Doe
Accepted by Jane Doe
Job 2:
Accepted by Foo Bar
Job 3:
Nobody accepted