Ada*_*cey 4 symfony doctrine-orm
我目前正在使用Symfony2和Doctrine2,并尝试使用查询构建器将两个表连接在一起.
我遇到的问题是我所有带注释的实体都没有设置表关系.我会在某个时候解决这个问题,但同时我需要尝试解决这个问题.
基本上我有两个表:产品表和product_description表.产品表存储基本信息,然后我有一个product_description表,用于存储描述信息.由于语言原因,产品可以包含一个或多个描述.
我想使用查询构建器,因此我可以将product和product_description结果检索为对象.
目前我正在使用以下代码:
// Get the query builder
$qb = $em->createQueryBuilder();
// Build the query
$qb->select(array('p, pd'));
$qb->from('MyCompanyMyBundle:Product', 'p');
$qb->innerJoin('pd', 'MyCompanyMyBundle:ProductDescription', 'pd', 'ON', $qb->expr()->eq('p.id', 'pd.departmentId'));
$query = $qb->getQuery();
$products = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
[Syntax Error] line 0, col 71: Error: Expected Doctrine\ORM\Query\Lexer::T_DOT, got 'MyCompanyMyBundle:ProductDescription'
Run Code Online (Sandbox Code Playgroud)
谁能指出我正确的方向?如果有另一种选择,我会以不同的方式做到这一点.
如果没有定义关系,我认为你不能加入这些表格.这是因为当您使用DQL时,您要查询对象而不是表,如果对象不知道彼此,则无法加入它们.
我认为你应该考虑使用NativeQuery.来自文档:
NativeQuery允许您执行本机SELECT SQL语句,根据您的规范映射结果.描述如何将SQL结果集映射到Doctrine结果的这种规范由ResultSetMapping表示.它描述了Doctrine在对象图方面如何映射数据库结果的每一列.这允许您将任意SQL代码映射到对象,例如高度供应商优化的SQL或存储过程.
基本上,您编写原始SQL,但告诉Doctrine如何将结果映射到现有实体.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
5700 次 |
| 最近记录: |