是否可以选择DQL中没有关系的实体作为对象?

时间:2013-12-13 03:00:44

标签: symfony doctrine-orm dql doctrine-query

例如,有一个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:错误:在a上调用成员函数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版中还有另一种方式。

0 个答案:

没有答案