как сделать такой запрос через конструктор? то что я делаю не работает.
‘SELECT * FROM post_likes
WHERE user_id=’ .$userId. ’ AND post_id IN (’.implode(’,’,$postIds).’)’
как сделать такой запрос через конструктор? то что я делаю не работает.
‘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 тоже стандартный компонент, не понимаю почему вам не нравится его использовать?
Что бы его использовать надо очень много кода написать.