1

有用户:

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”,如何指定呢?

4

2 回答 2

2

I use 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

于 2013-02-21T16:16:00.563 回答
1

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

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')

由创建者加入。

于 2013-02-22T07:30:50.350 回答