YiiFramework Имеется запрос, требуется его переписать на yii фраймвёрк

okuznetsov

Новичок
Требуется ваша помощь, не могу справиться самостоятельно, впервые столкнулся с фраймвёрком yii.

Имеется запрос:


$criteria = new CDbCriteria();
$criteria->order = 'rand()';
$criteria->limit = 1;

if($cat_ids)
{
$criteria->with = array(
'categories' => array(
'joinType' => 'INNER JOIN',
'condition' => "category_id IN (".implode(',', $cat_ids).")",
),
);
}

$criteria->condition = "t.id <> {$id}";
$criteria->together = true;

$related = Game::model()->findAll($criteria);

Требуется его переписать на следующий:

SELECT *
FROM `game` `t`
JOIN
(
SELECT (RAND() * (SELECT MAX(id) FROM game)) AS id
#SELECT (RAND() * 200529) AS id
) AS r2
WHERE `t`.id >= r2.id
#ORDER BY `t`.id ASC
LIMIT 15;
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
PHP:
$related = yii::app()->db->createCommand('
SELECT *
FROM `game` `t`
JOIN
(
SELECT (RAND() * (SELECT MAX(id) FROM game)) AS id
#SELECT (RAND() * 200529) AS id
) AS r2
WHERE `t`.id >= r2.id
#ORDER BY `t`.id ASC
LIMIT 15
')->queryAll();
 

okuznetsov

Новичок
PHP:
$related = yii::app()->db->createCommand('
SELECT *
FROM `game` `t`
JOIN
(
SELECT (RAND() * (SELECT MAX(id) FROM game)) AS id
#SELECT (RAND() * 200529) AS id
) AS r2
WHERE `t`.id >= r2.id
#ORDER BY `t`.id ASC
LIMIT 15
')->queryAll();

Получаю ошибку: Fatal error: Call to a member function getRate() on a non-object in /var/www/sitegirlsgames/data/www/girlswantgames.com/protected/views/game/view.php on line 269

Также попробовал сделать так:
$related = Game::model()->findBySql('SELECT * FROM `game` `t` JOIN (SELECT (RAND() * (SELECT MAX(id) FROM game)) AS id) AS r2 WHERE `t`.id >= r2.id LIMIT 10');

Тоже получаю ошибку:
array_chunk() expects parameter 1 to be array, object given
 

WMix

герр M:)ller
Партнер клуба
okuznetsov, заметил что изменил в одном файле а ошибка в другом? заметил что grigori, не писал ни разу getRate().
 

okuznetsov

Новичок
Всем спасибо за помощь. Для тех кому интересно как была решена данная проблема:

$criteria = new CDbCriteria();
$criteria->join = 'JOIN(SELECT (RAND() * (SELECT MAX(id) FROM game)) AS id) AS r2';
$criteria->condition = "`t`.id >= r2.id";
$criteria->limit = 10;
$related = Game::model()->findAll($criteria);
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
мой ответ был сарказмом вообще-то, именно такие "чудаки" тянут yii в сторону унылого поделия для ламеров
 
Сверху