2013-04-02 4 views
1

Предположим, что $ model hase некоторые элементы (от одного до многих отношений), поэтому в Yii $ model-> items возвращается массив моделей элементов.
Как получить массив идентификаторов связанных элементов. Это означает, что каждый элемент возвращаемого массива является целым числом.Как получить все связанные идентификаторы модели в Yii?

ответ

3

Вы должны просто написать свою собственную функцию для этого, например.

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

После просто позвонить $model->itemsIDs.

EDIT: как darkheir в своем комментарии, вы должны рассмотреть возможность использования DAO.

+2

Это решение является штраф, за исключением того, когда нам нужно улучшить выступления, потому что она загружает соответствующие элементы в одном запросе, создать соответствующие объекты, а затем выполнить цикл foreach, чтобы получить только идентификаторы. Вот почему выполнение запроса DAO может быть лучше, если производительность важна в webapp. – 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() 

Это позволит получить все идентификаторы из таблицы как массив

Смежные вопросы