1

例如,有一个获取一些文章的 DQL。

$query = $this->getEntityManager()->createQuery('
    SELECT a, t, u FROM MyArticleBundle:Article a
    LEFT JOIN a.tags t
    LEFT JOIN a.author u
    WHERE a.id IN (1,2,3)
    ORDER BY a.id DESC
');

我将此数据用作对象。

如:

$article->getId();
$article->getAuthor();
etc...

但是,发生需要在没有关系数据的情况下与该数据连接。
例如,我收到带有数据的评论。

$query = $this->getEntityManager()->createQuery('
    SELECT a, t, u, c FROM MyArticleBundle:Article a
    LEFT JOIN a.tags t
    LEFT JOIN a.author u
    LEFT JOIN MyCommentBundle:Comment c
        WITH c.chain_id = a.id AND c.app = :appName
    WHERE a.id IN (1,2,3)
    ORDER BY a.id DESC
')
->setParameter('appName', 'article');

有可能获得数据。
但是,程序(例如 '$article->getId();')不起作用。

FatalErrorException:错误:在非对象上调用成员函数 getId()

问题点是 'SELECT a, t, u, c' 处的 'c'。
是否可以选择作为在 DQL 中没有关系的评论的对象?
我应该更正程序吗?


编辑:

DB(表)关系不是。
我不想将评论表与文章表相关联,因为我想将它与其他应用程序分开管理。
但是,连接的 ID 存在。
在上述代码的情况下,它是 'chain_id' 和 'app'。

所以我可以得到文章的相关评论。
问题是获取数据是数组。

我的意思是,在上述代码的情况下,我想获取评论数据作为文章数据对象的子节点。
我想访问像$article->comments.

这是我以前见过的代码。

$this->bind(
  array('SomeLog as SomeLogs', array(
    'local'   => 'id',
    'foreign' => 'record_id',
  )),
  Doctrine_Relation::MANY // means hasMany
);

我认为此代码适用于学说版本 1。
我认为它用于组合以强制没有关系的表。

我希望在学说版本 2 中可能有另一种方式。

4

0 回答 0