我有以下SQL查询
SELECT
i.id,
i.title,
i.slug,
i.date_added as date_added,
a.slug as area_slug,
COUNT(o.id) as offers,
COUNT(v.item_id) as total_item_views
FROM
`item` `i`
LEFT JOIN
`offer` `o`
ON
i.id=o.item_id
LEFT JOIN
`viewed_item` `v`
ON
i.id=v.item_id
INNER JOIN
`a` `a`
ON
a.id=i.area_id
WHERE
j.id=3
它在PHPMyAdmin中运行良好。我将它转换为Yii所以它看起来像这样:
$cmd = Yii::app()->db->createCommand();
$cmd->select(array('i.id, i.title, i.slug, i.date_added as date_added, a.slug as area_slug, COUNT(o.id) as offers, COUNT(v.item_id) as total_item_views'));
$cmd->from('item as i');
$cmd->leftJoin('offers as o', 'i.id=o.item_id');
$cmd->leftJoin('viewed_item as v', 'i.id=v.item_id');
$cmd->join('area as a', 'a.id=i.area_id');
$cmd->where('i.id=:id', array(':id'=>$id));
$basicStatModel = $cmd->query();
在'seen_item'表具有等于$ id值的记录用于此查询的情况下,此方法可以正常工作。目前,seen_item只有2条记录,但它们是条目表中的多条记录。我正在看我的堆栈,它显示了这个:
ViewedItem.findByPk()
查询SQL:SELECT * FROM viewed_item
t
WHERE t
。id
='3'限制1
目前该表中没有ID等于3,所以我猜这就是页面错误的原因。但与此同时,我不确定为什么它在该表中寻找ID值。我可以看到它正在使用findByPK()方法。但是我已经要求它在SQL语句中找到一个基本上是FK。
如何解决此问题?它让我觉得SQL在PHPMyAdmin中起作用。
答案 0 :(得分:0)
右键!
问题出在我的控制器代码中。查询正确执行。此查询
Querying SQL: SELECT * FROM viewed_item t WHERE t.id='3' LIMIT 1
实际上只是控制器中view()方法中现有的Gii生成代码。
感谢Patrick的帮助和时间!
由于
强尼