【问题标题】:A little different left join with Symfony 1.4, Doctrine与 Symfony 1.4 的左连接略有不同,Doctrine
【发布时间】:2013-02-21 15:04:39
【问题描述】:

有用户:

id | name
 1    user1
 2    testuser

有任务:

id | creatorid | ownerid| name
1     1           1        task1
2     1           2        task2
3     2           1        task3
4     2           2        task4

我做了类似的事情:

Doctrine_Core::getTable('User')->createQuery()->leftJoin('User.Task')

但是表连接的是“creatorid”,而不是“ownerid”,如何指定呢?

【问题讨论】:

    标签: php doctrine symfony-1.4


    【解决方案1】:

    我使用 Doctrine_Query

    $q = Doctrine_Query::create()
            ->select('u.*, t.*')
            ->from('Users u')
            ->leftJoin('u.Tasks t ON u.id = t.creatorid');
    
    echo $q->getSqlQuery();
    

    Doctrine 1.2 Left Join Documentation

    【讨论】:

      【解决方案2】:

      这取决于您如何在Users 表上定义Task 关系。你应该有类似的东西:

      Tasks:
      ...
        relations:
          owner: {class: User, local: ownerId, foreign: id, foreignAlias: ownedTasks}
          creator: {class: User, local: creatorId, foreign: id, foreignAlias: createdTasks}
      

      然后你可以使用:

      Doctrine_Core::getTable('User')->createQuery()->leftJoin('User.ownedTasks)
      

      业主加入或

      Doctrine_Core::getTable('User')->createQuery()->leftJoin('User.createdTasks')
      

      由创建者加入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        相关资源
        最近更新 更多