【发布时间】:2015-08-03 09:10:49
【问题描述】:
我在从有关系的表中获取数据时遇到了一些问题。 I 3 个表:Good、Shop_attr_value 和 Shop_good_attr_val。表 Shop_attr_value 具有属性值(如内存大小或处理器类型),并且 Shop_good_attr_val 具有表 Good 和 Shop_attr_value(他们指出哪种类型的内存有好处)。所以我需要获取 Good 和她的处理器类型。我试过这个:
$criteria = new CDbCriteria();
$criteria->together = true;
$criteria->join = 'JOIN tbl_shop_attr_value';
$criteria->with = 'goodAttrVals';
$criteria->select='t.name,tbl_shop_attr_value.value';
$criteria->addCondition('t.id = goodAttrVals.good_id AND ON tbl_shop_attr_value.id = goodAttrVals.attr_value_id');
但我收到了错误提示
uknown 列 tbl_shop_attr_value.value
良好的关系:
public function relations()
{
return array(
'idGood' => array(self::HAS_MANY, 'GoodsColor', 'id_good'),
'category' => array(self::BELONGS_TO, 'Category', 'category_id'),
'brand' => array(self::BELONGS_TO, 'Brand', 'brand_id'),
'goodAttrVals' => array(self::HAS_MANY, 'GoodAttrVal', 'good_id'),
'goodImages' => array(self::HAS_MANY, 'GoodImage', 'good_id'),
'reviews' => array(self::HAS_MANY, 'Review', 'good_id', 'condition'=>'reviews.status=:status', 'params'=>array('status'=>Review::STATUS_ACTIVE), 'order'=>'reviews.id DESC'),
);
}
我如何获取这些数据?
【问题讨论】:
-
这是因为 tbl_shop_attr_value.value 在别名为 't' 的表中不存在。你需要使用 $criteria->with like 数组。这里是一个小例子:stackoverflow.com/questions/31759875/…
-
感谢您的重播。我试过这个:
$criteria->with = array('goodAttrVals'=>array( 'alias'=>'p', 'select'=>'attrValue.value', 'condition'=>'p.attr_value_id = attrValue.id', 'together' => true, )); $criteria->select='t.name'; $criteria->addCondition('t.id = goodAttrVals.good_id');但我又得到了错误:uknown column goodAttrVals.good_id -
将 t.id = goodAttrVals.good_id 更改为 t.id = p.good_id
标签: php activerecord yii relational-database