하위 선택에 대한 previous question에 이어, 나는과 같이, 가입에 여러 기준을 가진 SQL 문이 , 여러 조인을 사용하여 매우 숙달되지 않으며 이전 사람들은 결과를 얻기 위해 hack criteria together을 시도했습니다. 이렇게하면 Propel이 혼란스럽고 CROSS JOIN을 사용하기 시작했습니다.사용
$criteria->addJoin(self::ID, GroupMembershipPeer::PERSON_ID . ' AND ' .
GroupMembershipPeer::GROUP_ID . '=' . $group_id,
Criteria::LEFT_JOIN);
난 후 어느 정도 일 것으로 보인다 추진 1.4의 addMultipleJoin() 방법을 발견 추진이 두 번째 매개 변수의 필드 ID를 인식하지 수 있기 때문에 내가 read을했습니다 어떤에서이이었다. 나는 완전히 이해하지 않는, 또는 내가 원하는 것을 얻을 호출하는 방법 :
$criteria->addMultipleJoin(array(
array(
'left' => self::ID,
'right' => GroupMembershipPeer::PERSON_ID,
'operator' => Criteria::EQUAL
),
array(
'left' => GroupMembershipPeer::GROUP_ID,
'right' => $group_id,
'operator' => Criteria::EQUAL
),
), Criteria::LEFT_JOIN);
이 이상한 SQL 결과 :
SELECT DISTINCT FROM `person` CROSS JOIN `group_membership` LEFT JOIN ON (= AND =) WHERE person.ID IN (3,5,17) AND group_membership.PERSON_ID IS NULL LIMIT 10
그리고 PHP는 이상한 오류를 던지고있다 :
를Notice: Undefined offset: 0 in /path/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Criteria.php on line 675
사람이 내가 그것을 해결, 또는 내가 원하는 것을 달성하는 방법은 자신 또는 추진이 뭔가 잘못하고 있는지 알고 있습니까?