我正在尝试执行查询,但收到错误:
未知的表别名
表格设置如下:
Template_Spot hasOne Template
Template hasMany Template_Spot
Template hasMany Location
Location hasOne Template
我正在尝试执行以下DQL:
$locationid = 1;
$spots = Doctrine_Query::create()
->select('cts.*, ct.*, uc.*')
->from('Template_Spot cts')
->innerJoin('Template ct')
->innerJoin('Location uc')
->where('uc.locationid = ?', $locationid)->execute();
是否有人发现问题?
答案 0 :(得分:1)
尝试找出哪些表别名未被识别。我认为它正在尝试将Template_Spot与Location连接,在这种情况下您可能需要这样做:
[pseudo code]
FROM Template_Spot cts, cts.Template ct, ct.Location uc
有时只是在模式中定义Alias和foreignAlias名称也可能有所帮助,Doctrine很容易混淆。有了这样的多个连接,Doctrine有时可能会生成超过必要的SQL查询,您可能希望完全绕过DQL。
答案 1 :(得分:0)
如果您选择所有字段,则根本不需要->select()
。
不应该是:
$spots = Doctrine_Query::create()
->from('Template_Spot cts')
->leftJoin('Template ct')
->leftJoin('Location uc')
->where('uc.id = ?', $locationid)
->execute();