2013-04-02 34 views
1

假設$模型hase一些項目(一對多關係),所以在Yii $模型 - >項目返回一個項目模型數組。
如何獲取相關項目的ID數組。這意味着返回數組的每個元素都是一個整數。如何在Yii中獲取所有相關的型號ID?

回答

3

您應該爲此編寫自己的函數,例如

public function getItemsIDs() 
{ 
    $ids = array(); 
    foreach($this->items as $item) 
    $ids[] = $item->id; 
    return $ids; 
} 

之後你只需撥打$model->itemsIDs

編輯:as darkheir在其評論中表示,您應該考慮使用DAO

+2

這個解決方案是好的,只是當我們需要改進的性能,因爲它會在一個查詢負載的相關項目,創建相關的對象,然後執行'foreach'循環只獲取id。這就是爲什麼執行一個DAO查詢可能會更好,如果性能是重要的web應用程序。 – darkheir

+1

我同意,回答更新 – soju

+0

謝謝男人,肯定直接查詢有更好的表現。現在我知道我的問題沒有特別的Yii功能! – HPM

2

這裏是直接查詢,從示範運行的一個例子:

$this->getDbConnection()->createCommand("SELECT id FROM items WHERE model_id = :modelId")->bindParam(":modelId", $model->id, PDO::PARAM_STR)->queryColumn(); 

在結果你會得到數字陣列()從表中的值標識。

0

另一種變體。

Yii::app()->db->createCommand("SELECT id FROM items WHERE model_id=".$model->id)->queryColumn() 

這將讓所有的ID從表作爲數組

相關問題