【发布时间】:2013-12-10 12:28:02
【问题描述】:
我正在尝试在 ActiveRecord 标准中重现以下 SQL:
SELECT COALESCE(price, standardprice) AS price
FROM table1
LEFT JOIN table2
ON (pkTable1= fkTable1)
WHERE pkTable1= 1
到目前为止,我有以下内容:
$price = Table1::model()->find(array(
"select" => "COALESCE(price, standardprice) AS price",
'with' => array(
'table2' => array(
'joinType' => 'LEFT JOIN',
'on' => 'pkTable1= fkTable1',
)
),
'condition' => 'pkTable1=:item_id',
'params' => array(':item_id' => 1)
));
但这会导致以下错误:'Active record "Table1" is trying to select an invalid column "COALESCE(price". Note, the column must exist in the table or be an expression with alias.
该列应该存在,这里有 2 个表结构:
表 1
pkTable1 int(11) - Primary key
standardprice decimal(11,2)
name varchar(255) //not important here
category varchar(255) //not important here
表2
pkTable2 int(11) - Primary key //not important here
fkType int(11) - Foreign key //not important here
fkTable1 int(11) - Foreign key, linking to Table1
price decimal(11,2)
我到底做错了什么?
【问题讨论】:
-
尝试如下替换您的选择:
"select" => array("COALESCE(price, standardprice) AS price")。这可能有助于它理解逗号不是列分隔符。
标签: php sql activerecord yii