Yii Framework Forum: Как Сделать Запрос Через Конструктор? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

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

#1 User is offline   ruzarh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 17-February 13

Posted 17 February 2013 - 01:53 PM

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

'SELECT * FROM `post_likes` WHERE user_id=' .$userId. ' AND post_id IN ('.implode(',',$postIds).')'
0

#2 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 317
  • Joined: 03-September 11

Posted 17 February 2013 - 02:10 PM

Надо было привести код, который у тебя не работает.
Вообще по учебнику:
$command=Yii::app()->db->createCommand($sql);
$command->execute();

0

#3 User is offline   ruzarh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 17-February 13

Posted 17 February 2013 - 03:02 PM

ни такой

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

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

#4 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 317
  • Joined: 03-September 11

Posted 19 February 2013 - 01:59 AM

Эти дни ответ крутился где-то в голове, сегодня вспомнил, где видел подобную функциональность. Это 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();

0

#5 User is offline   ruzarh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 17-February 13

Posted 19 February 2013 - 12:03 PM

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

#6 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 317
  • Joined: 03-September 11

Posted 25 February 2013 - 09:05 AM

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

#7 User is offline   ruzarh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 17-February 13

Posted 04 March 2013 - 03:50 PM

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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users