关系API:where()无法使用命名空间类确定列

时间:2011-09-02 20:54:46

标签: php namespaces propel

我试图做这样的事情

  

$ u = \ Entity \ UserQuery :: create() - > where('User.Username =?',“john”) - > findOne();

但我收到此错误

  

无法确定要绑定到子句'User.Username =?'

中的参数的列

虽然非命名空间上下文中的相同代码可以正常工作。

我知道有更好的方法可以做到,但我想知道为什么会失败

2 个答案:

答案 0 :(得分:5)

众所周知的问题:

解决问题的最佳方法是使用别名:

$u = \Entity\UserQuery::create('alias')
    ->where('alias.Username = ?', "john")
    ->findOne();

以下代码也可以使用:

$u = \Entity\UserQuery::create('alias')
    ->where('Entity\UserQuery.Username = ?', "john") // or ->where('\Entity\UserQuery.Username = ?', "john")
    ->findOne();

此致 威廉

答案 1 :(得分:1)

指定第三个参数,绑定类型,帮助我:

$u = \Entity\UserQuery::create()
    ->where('alias.Username = ?', "john", \PDO::PARAM_STR)
    ->findOne();