Класс модели MyModel имеет следующее поведение
public function behaviors() {
return [
'CTimestampBehavior' => [
'class' => 'zii.behaviors.CTimestampBehavior',
'createAttribute' => null,
'updateAttribute' => 'update_time',
'setUpdateOnCreate' => true
]
];
}
В коде в контроллере я пишу что-то вроде
$model = new MyModel();
$dataReader = Yii::app()->db->createCommand()
->selectDistinct('some fields')
->from('MyModel')
->leftJoin('some table')
->where('some criteria')
->query();
while ($item = $dataReader->readObject('MyMode', $model->getAttributes())) {
**//!!! HERE item array is with model attributes, which are empty**
$items[] = $item;
}
катастрофа, она не работает, элементы - это массив, каждый из элементов содержит пустой список атрибутов, например, никаких данных, извлеченных из db
Если я напишу
$dataReader = Yii::app()->db->createCommand()
->selectDistinct('some fields')
->from('MyModel')
->leftJoin('some table')
->where('some criteria')
->query();
while ($item = $dataReader->readObject('MyModel', MyModel::model()->getAttributes())) {
//!!! HERE item array is with model attributes, which hold correct data, taken from db
$items[] = $item;
}
, это работает
Если я избавлюсь от поведения CTimestamp, оба случая будут работать.
Если я отлаживаю первый случай, я понимаю, что после завершения pdo fetchobject он вызывает конструктор с script = "current_timestamp ()". Вопрос почему? И где я ошибся?