使用doctrine ORM从两个表中检索信息的正确方法是什么

时间:2010-10-31 13:05:04

标签: php doctrine dql doctrine-1.2

我正在尝试在两个表上执行简单连接,并且无法找到正确的语法 - 我知道我错过了一些简单的事情。

从'用户'表中我需要id(工作正常) 从'meta'表我需要last_name(不工作)

$q = Doctrine_Query::create()
->from('Users u')
->leftJoin('u.Meta m');

$users = $q->execute();

//attempt 1    
foreach($users as $user){
    $user_array[$user->id] = $user->last_name;
}

//attempt 2   
foreach($users as $user){
    $user_array[$user->id] = $user->m.last_name;
}

我也试过添加一个明确的     选择(u.id,m.last_name) 查询但结果始终相同

Uncaught exception 'Doctrine_Record_UnknownPropertyException' with message
'Unknown record property / related component "last_name" on "Users"

显然,我尝试访问的属性不在users表中。 - 查询工作正常,好像我没有请求last_name字段 - 我的应用程序按预期工作..

//proof   
foreach($users as $user){
    $user_array[$user->id] = 'fake_last_name!';
}

任何人都可以提供一个简单的示例,说明我打算如何做到这一点(甚至是文档中页面的链接)所有在doucmentation中JOINING DQL的示例都将查询输出到SQL而不是迭代结果。 ..

Doctrine Documentation: Join Syntax

1 个答案:

答案 0 :(得分:1)

我设法解决了......

http://www.doctrine-project.org/documentation/manual/1_2/en/working-with-models

foreach($users as $user){
    $user_array[$user->id] = $user->Meta->last_name;
}