这是一个很难问的问题,因为我的代码运行良好。我只是在学习 YII 平台,我的问题不是我无法得到我想要的工作,而是如果有更好的方法来利用 YII 平台及其类。
基本上我有一个使用 YII 平台的名为 Lightspeed 的平台的网上商店。
在产品详细信息部分,我希望提取其相关产品。值得庆幸的是,Lightspeed 已经为此准备好了表格(这让我有更多理由认为我做错了)。
现在我在做什么似乎有点硬编码。
在我看来,我有这个来获得产品......
$related_products = Product::GetRelatedProducts();
我的控制器中什么都没有,而在我的模型中我有这个..
public function getRelatedProducts()
{
$rawData=Yii::app()->db->createCommand('SELECT * FROM xlsws_product as Product LEFT JOIN xlsws_product_related as ProductRelated ON ProductRelated.related_id=Product.id WHERE ProductRelated.related_id=Product.id ')->queryAll();
return $rawData;
}
正如我所说,这段代码没有任何问题,但是我看到模型中的所有其他查询都具有如此多的功能,这让我觉得我做错了。
例子包括..
protected function getSliderCriteria($autoadd=0)
{
$criteria = new CDbCriteria();
$criteria->distinct = true;
$criteria->alias = 'Product';
$criteria->join='LEFT JOIN '.ProductRelated::model()->tableName().' as ProductRelated ON ProductRelated.related_id=Product.id';
if (_xls_get_conf('INVENTORY_OUT_ALLOW_ADD',0)==Product::InventoryMakeDisappear)
$criteria->condition = 'ProductRelated.product_id=:id AND inventory_avail>0 AND web=1 AND autoadd='.$autoadd.' AND parent IS NULL';
else
$criteria->condition = 'ProductRelated.product_id=:id AND web=1 AND autoadd='.$autoadd.' AND parent IS NULL';
$criteria->params = array(':id'=>$this->id);
$criteria->limit = _xls_get_conf('MAX_PRODUCTS_IN_SLIDER',64);
$criteria->order = 'Product.id DESC';
return $criteria;
}
这只是一个似乎使用此数据的小部件示例(尽管我不确定该数据如何变成数组,因为当我打印出来时,$criteria
我得到包含查询命令的数组。
如果您需要更多说明我在寻找什么,请告诉我。