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)
    )
));