我正在尝试在Yii关系定义中使用带有计算字段的查询,但我得到的只是错误。
这是我的查询:$ me = new CDbExpression('CONCAT_WS(\',\',last_name,first_name)AS the_name');
这是我的关系:'author'=>数组(self :: BELONGS_TO,'作者','auth_id','select'=> $ me),
我的问题似乎是CDbExpression期待一个参数,但查询不需要参数!?!?!?
我收到错误500“trim()期望参数1为字符串,给定数组”(因为我没有参数!?!)。
如果我添加一个假参数:$ me = new CDbExpression('CONCAT_WS(\',\',last_name,first_name)AS the_name',array('test'=>'test')); 我收到相同的错误消息。
我做错了什么?
答案 0 :(得分:0)
听起来像trim()传递数组而不是字符串。引用的“参数”不是作为第二个参数传递给CDbExpression的“params”数组,而是传递给trim()的单个参数。
CDbExpression可以将数组而不是字符串返回到作者关系中的“select”子句吗?我会验证$ me是一个字符串,而不是一个数组。
此外,调用trim()的位置是什么?这也可能会对这个问题有所启发。打开所有错误报告以获取文件和行号。 DB代码中有几个地方调用了trim()。
答案 1 :(得分:0)
尝试这种方式:
'author' => array(self::BELONGS_TO, 'Author', 'auth_id', 'select'=>array($me)),