Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用推进装置';s addMultipleJoin_Php_Sql_Symfony1_Symfony 1.4_Propel - Fatal编程技术网

Php 使用推进装置';s addMultipleJoin

Php 使用推进装置';s addMultipleJoin,php,sql,symfony1,symfony-1.4,propel,Php,Sql,Symfony1,Symfony 1.4,Propel,下面是一个关于子选择,我有一个SQL语句,在连接上有多个条件,如下所示: SELECT * FROM person LEFT OUTER JOIN group_membership ON person.id = group_membership.person_id AND group_id = 1 WHERE group_membership.person_id is null; 不幸的是,我与Symfony一起使用的ORM spreep似乎不太擅长使用多个连接,以前的人也尝试过实现这

下面是一个关于子选择,我有一个SQL语句,在连接上有多个条件,如下所示:

SELECT * FROM person
LEFT OUTER JOIN group_membership
  ON person.id = group_membership.person_id
  AND group_id = 1
WHERE group_membership.person_id is null;
不幸的是,我与Symfony一起使用的ORM spreep似乎不太擅长使用多个连接,以前的人也尝试过实现这些结果。这样做,它开始使用交叉连接。据我所知,这是因为Propel无法识别第二个参数的字段ID:

$criteria->addJoin(self::ID, GroupMembershipPeer::PERSON_ID . ' AND ' .
    GroupMembershipPeer::GROUP_ID . '=' . $group_id,
    Criteria::LEFT_JOIN);
然后,我找到了推进1.4的方法,它似乎在某种程度上起了作用。我不完全理解它,或者我如何称呼它来得到我想要的:

$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

有人知道是我自己还是我做错了什么,以及我如何修复它,或者完成我所需要的吗?

也许我错了,但你为什么不使用这样的东西:

$c->addJoin(array(self::ID, GroupMembershipPeer::GROUP_ID), array(GroupMembershipPeer::PERSON_ID, $group_id) );
自1.3版以来,标准支持多个连接条件