我有sql condidtion SELECT * FROM (SELECT * FROM Prices WHERE aliasId = :aliasId order by id desc) p1 group by p1.currency
,我正在嘗試在hasMany語句中使用它。Yii2 has has many custom condition
$q = $this->hasMany(Prices::className(), ['aliasId' => 'id']);
$db = \Yii::$app->db;
$query = $db
->createCommand('SELECT * FROM (SELECT * FROM Prices WHERE aliasId = :aliasId order by id desc) p1 group by p1.currency')
->bindValue(':aliasId', $this->id);
$query->prepare(true);
$q->sql = $query->getRawSql();
return $q;
但是當hasMany調用時,$this->id
爲空。有沒有什麼辦法綁定自定義查詢和鏈接數組呢?
UPDATE。 我知道$this->id
的原因是空的,因爲我在我的Controller中使用Prices::find()>with('prices')
,所以Yii爲所有價格列表創建查詢。 hasMany
只是在$link
參數的空查詢中添加addWhere('in', $key, $value)
,我試圖覆蓋他的查詢,但我不能。
你可以請提供更多的代碼,其中定義代碼? – AndreiDMS 2015-04-06 12:28:47
所有此代碼均來自PricesAlias ActiveRecordClass中的getPrices函數(價格類爲空的活動記錄)。不久,我在價格表中有很多行,並帶有aliasId屬性(哪些鏈接PricesAlias和Prices表)。在getPrices方法中,我需要返回帶有唯一貨幣字段的最後價格記錄。 – user1958350 2015-04-06 20:22:00
對不起,我不明白你想達到什麼樣的效果,以及你實際遇到了哪些問題。你能更清楚一點嗎?請修改您的帖子。爲什麼你有這個嵌套查詢? AFAIK你不需要那個。你創建一個hasMany查詢$ q,你以後用$ q-> sql進行更改?這一切都有意義嗎?對不起,瑪貝是我的錯... – robsch 2015-04-13 19:18:53