php - 推进和左加入

标签 php symfony1 doctrine symfony-1.4 propel

在 Doctrine 中我可以:

    $q = Doctrine_Query::create()
        ->from('One o')
        ->where('t.text = ?', 'aaa')
        ->andWhere('h.text = ?', 'bbb')
        ->leftJoin('o.Two t')
        ->leftJoin('t.Three h')
        ->leftJoin('h.Four f')
        ->execute();

我如何在 Symfony 1 的 Propel 中制作这个?

最佳答案

如果在1.6之前使用propel,则必须遵循

您必须知道每个关系的主键。 如果是id,可以是这样的:

$c = new Criteria();

$c->add(TwoPeer::TEXT, 'aaa');
$c->add(ThreePeer::TEXT, 'bbb');

$c->addJoin(OnePeer::TWO_ID, TwoPeer::ID, Criteria::LEFT_JOIN);
$c->addJoin(TwoPeer::THREE_ID, ThreePeer::ID, Criteria::LEFT_JOIN);
$c->addJoin(ThreePeer::FOUR_ID, FourPeer::ID, Criteria::LEFT_JOIN);

$results = OnePeer::doSelect($c);

对于 Propel 1.6(从 https://github.com/propelorm/sfPropelORMPlugin 使用它),像这样:

$results = OneQuery::create()
  ->useTwoQuery()
    ->filterByText('aaa')
    ->useThreeQuery()
      ->filterByText('bbb')
    ->endUse()
  ->endUse()
  ->leftJoinWith('Three.Four')
  ->find();

关于php - 推进和左加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9735666/

相关文章:

php - 像sql一样将日期更改为时间戳

php - 十月 CMS : Not able to create a Form Widget

php - 如何将真棒字体添加到php代码中

mysql - Symfony/Doctrine : ManyToMany Relation and SQL exception

php - 使用 Zend 测试设置 PHPUnit

javascript - 更改 javascript 函数,以便 php 页面将作为弹出窗口出现

file-upload - Symfony 文件上传 - "Array"存储在数据库中而不是实际文件名

model-view-controller - 访问模型中的 Symfony 用户 session (Doctrine)

symfony1 - Doctrine Entity findBy 多对多

Symfony2 ManytoMany 与 nullable true 的关系