例如,有一个获取一些文章的 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 中可能有另一种方式。