2011-12-17 2 views
0

У меня есть действие контроллера Yii, которое может потенциально возвращать очень большой набор строк, которые затем закодированы в JSON. Поскольку клиенту, который я создаю, требуется только несколько столбцов или свойств модели, я хотел бы разбить набор, чтобы возвращать только определенные столбцы. То, что я сейчас что-то вроде:Сбрасывать атрибуты большой набор моделей

$models = MyModel::model()->findAll($criteria); 
$rows = $model->attributes; 
$this->_sendResponse(200, CJSON::encode($rows)); 

Я чувствую, как место, чтобы сделать это было бы во второй линии, но я новичок в Yii и не знаю, как это сделать. Любая помощь приветствуется!

ответ

2

Возможно, вы не смогли удалить ненужные столбцы, но отправить необходимые?

$models = MyModel::model()->findAll($criteria); 
// do foreach loop with $models ? 

$dataToSend = array() 
$dataToSend['id'] = $model->id; 
$dataToSend['name'] = $model->name; 
$dataToSend['moreparam'] = $model->moreparam; 

//send data 
$this->_sendResponse(200, CJSON::encode($dataToSend)); 

Таким образом, этот код является более читаемым, и мы знаем, что мы отправляем. Если позже вы удалите некоторые атрибуты, возможно, вы забудете, что вы уходите.

+0

Perfect. Спасибо! –

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