所以我有两张桌子:X和Y。
schema.yml看起来像:
X:
columns:
something: { type: string(255), notnull: true }
y_id: { type: integer, notnull: true }
relations:
Y: { onDelete: CASCADE, local: y_id, foreign: id, foreignAlias: xs }
Y:
columns:
something: { type: string(255), notnull: true }
在我的XTable中我有:
class XTable extends Doctrine_Table
{
function getXesWithYs()
{
return $this->createQuery("x")->leftJoin("x.Y y")->execute();
}
}
生成的查询实际上选择了x。*和y。*,但是当我尝试使用Y的数据时,它会对从Y中选择的每一行执行额外的查询,其中y.id = x.y_id。
所以,如果我这样做:
echo $results[0]->Y->something;
Doctrine将运行额外的查询再次获取Y的数据。
每Y行只发生一次。如果我再次使用它,它将不会第三次加载它,但如果我使用$result[1]
的Y,我会得到另一个查询。
答案 0 :(得分:1)
似乎即使你像你一样加入某些东西,你也必须选择那些表格。像这样:
class XTable extends Doctrine_Table
{
function getXesWithYs()
{
return $this->createQuery("x")->select('x.*, y.*')->leftJoin("x.Y y")->execute();
}
}