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

しかし、テーブルは「ownerid」ではなく「creatorid」に接続されています。どのように指定するのですか?

4

2 に答える 2

2

Doctrine_Queryを使用します

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

echo $q->getSqlQuery();

Doctrine1.2左結合ドキュメント

于 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 に答える