Yii findByAttributes () с атрибутом больше, чем.
Я использую Yii некоторое время, и когда я хочу вытащить данные из базы данных, я обычно просто использую findByAttributes.
$model=Auction::model()->findAllByAttributes(array('status'=>'1'));
или что-то в этом роде.
мой вопрос был бы, как бы я справился с ситуацией больше, чем тип? Я пытался!--3-->
$model=Auction::model()->findAllByAttributes(array('starttime'>=$date));
где дата была назначена текущая настройка даты/времени, однако это вызывает ошибку. Итак, мой вопрос: мне нужно использовать условия и / или параметры? Должен ли я делать такие вещи? в модели и используя критерии или CActiveDataProvider вещи?
Я был бы признателен кто-то указал мне в правильном направлении. Я всегда просто получал с помощью findAll () S, но я знаю, что это лучший способ сделать это. Некоторая общая информация о том, что и когда использовать атрибуты, условия, параметры и т. д. Также была бы хорошей.
Я прочитал документацию Yii и искал тонны сайтов для ответов на эти вопросы, и я не нашел его.
2 ответов
это хорошая идея использовать params даже с findByAttributes,но это только соответствует. Вы можете использовать findAll и добавить условие и формат будет очень похож на то, что вы уже делаете:
$model=Auction::model()->findAll(array(
'condition'=>'status=:status AND starttime >= :date',
'params'=>array(':status'=>1, ':date'=>$date),
));
Если вы выполняете очень сложный запрос или программно строите запрос, вы можете использовать findAllBySql или CDbConnection:: createCommand или Конструктор Запросов, это просто зависит от того, что имеет наибольший смысл для вашего приложения.
I будет (re)читать раздел Yii на работа с базами данных, хотя у него нет обширных примеров, это довольно ясно. Затем вы можете попробовать Yii блог учебник,учебники Ларри Уллмана, etc.
тип 2-го параметра findAllByAttributes
смешивается, таким образом, у нас есть (не бесконечно, но) много возможностей, например:
$model = Auction::model()->findAllByAttributes(
array(
'status' => 1
),
'starttime >= :date',
array(
'date'=>$date
)
));
или
$model = Auction::model()->findAllByAttributes(
array(
'status' => 1
),
array(
'condition' => 'starttime >= :date'
'params' => array('date'=>$date)
)
));