+-----+--------------+
| id | title |
+-----+--------------+
| 1 | Service 1 |
+-----+--------------+
| 2 | Service 2 |
+-----+--------------+
테이블 : 워크샵 {hasMany의
WorkshopServices
}
+-----+---------------+
| id | title |
+-----+---------------+
| 1 | Workshop 1 |
+-----+---------------+
| 2 | Workshop 2 |
+-----+---------------+
테이블 : WorkshopServices
+-----+--------------+-------------+
| id | workshop_id | service_id |
+-----+--------------+-------------+
| 1 | 1 | 1 |
+-----+--------------+-------------+
| 2 | 1 | 2 |
+-----+--------------+-------------+
내가
service_id
내 쿼리에 의해
Workshops
를 찾으려면
$this->Workshops->find()
->contain([
'WorkshopServices'
])
->where([
'WorkshopServices.service_id IN'=>[1,2,3]
]);
,515,
쿼리 결과하면
Unknown column `WorkshopServices.service_id` in 'where clause'
사실 Workshops
표 WorkshopServices
테이블 임의 JOIN
생성되지 않는다.
Query Builder
에서 올바른 결과를 얻으려면 어떻게 쿼리를 작성할 수 있습니까?
을 충족하지만 가끔은'중복을 반환 워크샵되어 배열 결과 '(여러 서비스를 선택할 때) :(귀하의 질의를 업데이트하십시오 ... –
일치하기 전에 별명을 사용하십시오 –
@GabrielFerreira, Workshop을 제공하는 WorkshopService는 하나만 반환합니까? 이 질문에서 완전히 명확하지는 않지만, OP는 모든 서비스가 워크숍과 관련되기를 바랄 것입니다. 한 가지 해결책은 표시된 기능을 사용하는 것일 수도 있지만 일치하는 대신 봉쇄에 넣은 다음 결과를 매핑/축소하여 서비스가없는 것을 제거 할 수 있습니다. –