例如,有一个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版中还有另一种方式。