工作,我有兩個表order
和Yii的使用標準
order
| id |
| 1 |
| 2 |
order_version
| id | order_id | status |
| 1 | 1 | 0 |
| 2 | 2 | 0 |
| 3 | 1 | 1 |
| 4 | 1 | 2 |
我想找到所有這一切已經改變版本的訂單。這意味着我只想得到id='1'
的訂單,因爲另一個沒有改變,只有一個版本。
試過這一個:
1) $criteria = new CDbCriteria();
2) $criteria->with = array('orderVersions');
3) $criteria->addCondition("(SELECT MAX(status) FROM order_version) != '0'");
4) $criteria->addInCondition('order.id', $orderArray);
5) $criteria->order = 'order.id DESC';
6) $orders = Order::model()->findAll($criteria);
$orderArray
變量是order
id
在數組。所有的問題
首先是在4號線。
Column not found: 1054 Unknown column 'order.id' in 'where clause'
,如果我做的只是id
代替order.id
那麼我
Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous.
同樣的問題與5日線。
另:我真的不知道如何使用子查詢中警予,這是第3行。
有什麼建議?
的Yii不關心原始表名,在這種情況下, '訂單',它只關心關係名稱。在這種情況下,原始表格始終是't','order_version'是'orderVersions'。 – adamors
好吧,別名很清楚,謝謝。子查詢呢?實際上,如果我用'orderVersions'替換'order_version',我有一個錯誤'Table'imdb.orderVersions'不存在'。也許這是因爲WHERE子句? –