Как Сделать Запрос Через Конструктор?

как сделать такой запрос через конструктор? то что я делаю не работает.

‘SELECT * FROM post_likes WHERE user_id=’ .$userId. ’ AND post_id IN (’.implode(’,’,$postIds).’)’

Надо было привести код, который у тебя не работает.

Вообще по учебнику:




$command=Yii::app()->db->createCommand($sql);

$command->execute();



ни такой

$db = Yii::app()->db;

$select = $db->createCommand()->select(’*’)->from(self::TBL_POST_LIKES)

    ->where(array('AND', 'user_id=:user_id', new CDbExpression('post_id IN (:post_ids)',  $postIds)), array('userId' => $userId));

ни такой

$db = Yii::app()->db;

$select = $db->createCommand()->select(’*’)->from(self::TBL_POST_LIKES)

    ->where(array('AND', 'user_id=:user_id', array('IN', 'post_id', array($postIds))), array('userId' => $userId));

ни такой

$db = Yii::app()->db;

$select = $db->createCommand()->select(’*’)->from(self::TBL_POST_LIKES)

    ->where(array('AND', 'user_id=:user_id', array('IN (:post_id)', 'post_id')), array('userId' => $userId, ':post_id' => $postIds));

такой мне не интересен,

$select = $db->createCommand(new CDbExpression(‘SELECT * FROM post_likes WHERE user_id=’ .$userId. ’ AND post_id IN (’.implode(’,’,$postIds).’)’))->method(METHOD);

хочется именно из конструктора собрать, он более читабелен. Просто с зендовским часто работаю, там как то все опрятнее получается

Эти дни ответ крутился где-то в голове, сегодня вспомнил, где видел подобную функциональность. Это CDbCriteria

Так вот можно получить массив AR


$criteria=new CDbCriteria();

$criteria->compare('user_id', $userId);

$criteria->addInCondition('post_id',array(1,2,3,4,5,6));

$posts = TableModel::model()->findAll($criteria);

Если значения нужны в виде массива, то кажется можно и так:




$select = $db->createCommand($criteria)->queryAll();



На самом деле не очень хочется использовать CDbCriteria. Хотелось стандартным конструктором все сделать. Но впринципе решение есть, но не так как мне хотелось. Спасибо)))

CDbCriteria тоже стандартный компонент, не понимаю почему вам не нравится его использовать?

Что бы его использовать надо очень много кода написать.