28

私はこのようなエンティティを持っています:

/**
 *
 * @Table(name="table")
 * @Entity
 */
 class Table {

    /**
     * @Column(type="integer")
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
     private $id;


    /**
     * @ManyToOne(targetEntity="Entities\Users")
     * @joinColumn(name="userId", referencedColumnName="id")
     */
     private $User;


    /**
     * @Column(type="string")
     */
     private $text;


}

私が行った場合 $q->getQuery()->getSingleResult()->getUser()->getUserId()

教義は次のようなクエリを生成します:

SELECT * FROM table t INNER JOIN users u ON u.id = t.userId WHERE id = 100

しかし、テーブルユーザーが必要ない場合は、userId を取得する方法を教えてください。

純粋なSQLでは、私はただ

SELECT * FROM table WHERE id = 100

ユーザーテーブルに参加せずにuserIdを取得します。

4

4 に答える 4

10

これを試して:

$q = $qb->getQuery();
$q->setHint(\Doctrine\ORM\Query::HINT_INCLUDE_META_COLUMNS, true);
于 2011-07-12T14:39:51.917 に答える
0

ドキュメントによると、D2 エンティティは外部キーを公開する必要はありません。外部キーはすべてマッピング情報によって内部的に行われるためです。これを行うには、外部キーのマッピング情報を提供するだけです。

于 2011-05-19T18:07:27.713 に答える
-6

doctrine2はわかりませんが、私が読んだものから、これはORMです。したがって、ユーザーが読み込まれない遅延読み込みの形式が必要であることをお勧めします。この記事は、遅延読み込みがdoctrine2で利用可能であることを示唆しています

これにより、ユーザーが後で返されたテーブルで使用される場合、複数のdb呼び出しが発生する可能性があります。これを、1回のヒットでデータを取得するというアイデアと比較検討する必要があります。

于 2010-10-12T09:57:57.177 に答える