Пустая выборка

не могу понять почему возвращается пустой запрос.

Вот исходные данные




class products extends CActiveRecord {


	const STATUS_ACTIVE = 1;

	const STATUS_INACTIVE = 0;


        // skip some code

	

	public function getAllProducts() {

		$criteria = new CDbCriteria();

		$criteria->condition = "visible = :visible";

		$criteria->params = array(':visible' => products::STATUS_ACTIVE);

		$criteria->sort = 'pos ASC';

		

		return products::model()->findAll($criteria);

	}    

}




так вот вызов метода возвращает пустой запрос.

хотя на самом деле, если взять запрос из XWebDebugRouter и запустить в phpmyadmin то записи есть.

выборка элементарная, но где ошибка не могу понять

если убрать condition & params то все работает.

ВОт эта строчка точно верная ?

Точно не верная… :)

http://www.yiiframework.com/doc/api/CDbCriteria#order-detail

черт, туплю )

всем спасибо

НО, дело в том что эта строчка ничего не ломает и с ней все работает.

а вот с condition & params нулевой результат.

Конечно не ломает, переменная вообще не используется. Измените строку на


$criteria->order = 'pos ASC';

По теме


class MyClass

{

    public $text = '';


    public function echo()

    {

         echo $this->text;

    }

}


$class = new MyClass;

$class->string = 'Hello world!';


$class->echo(); //Почему же у меня не выводится Hello world! ..? <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/smile.gif' class='bbc_emoticon' alt=':)' />

с вашим примером все ясно )

неужели у меня такая же ошибка, а я ее не вижу ?


        public function getAllProducts()

        {

                $criteria = new CDbCriteria();

                $criteria->condition = 'visible = :visible';

                $criteria->params = array(':visible' => products::STATUS_ACTIVE);

                $criteria->order = 'pos';

                

                return products::model()->findAll($criteria);

        } 

Или так


        public function getAllProducts()

        {

                return products::model()->findAll(array(

                       'condition' => 'visible = :visible',

                       'params' => array(':visible' => products::STATUS_ACTIVE),

                       'order' => 'pos',

                ));

        } 

вообще-то это два идентичных способа и как не странно результат один и тот же (

А если в контроллере сделать так, то нормально работает?




$criteria = new CDbCriteria;

$criteria->condition = 'visible = 1';


$models = products::model()->findAll($criteria);



Вообще, в этом случае подход должен быть иной, с использованием scopes:




public function scopes()

{

    return array(

        'visible'=>array(

              'condition'=>'visible = '.self::STATUS_ACTIVE,

        ),

    );

}



Затем в контроллере:




$models = products::model()->visible()->findAll();



черт, проблема была в типе поля, enum (‘0’,‘1’)