Php Yii框架,如何获取相关的表数据?
我对yii是新的,模型关系对我来说是新的。我目前正在开发一个具有表结构的系统:Php Yii框架,如何获取相关的表数据?,php,yii,frameworks,Php,Yii,Frameworks,我对yii是新的,模型关系对我来说是新的。我目前正在开发一个具有表结构的系统: products PK id brand product_locales PK id FK product_id name locale product_relations PK id FK product_id FK related_id 我的产品型号关系: public function relations() { return array(
products
PK id
brand
product_locales
PK id
FK product_id
name
locale
product_relations
PK id
FK product_id
FK related_id
我的产品型号关系:
public function relations()
{
return array(
'productlocales' => array(self::HAS_MANY, 'ProductLocale', 'product_id'),
'relations' => array(self::MANY_MANY, 'Product', 'product_relations(product_id, related_id)')
);
}
然后我的产品区域设置关系:
public function relations()
{
return array(
'product' => array(self::BELONGS_TO, 'Product', 'product_id')
);
}
在我的产品控制器中,当我调用此代码时:
$product = ProductLocale::model()->findByPk(1);
var_dump($product->product->relations);
它从product表中输出相关产品的id和品牌。但我想输出的是产品的所有区域设置,即名称和区域设置
有人能帮我解决这个问题吗
提前谢谢 我不了解产品关系表,似乎与产品的关系有很多,而不是很多 在任何情况下,如果我理解,您都需要找到产品的id,然后找到具有此id的所有产品区域设置:
$prodLoc=ProductLocale::model()->findByPk(1);
$arrayProdLoc=ProductLocale::model()->findAllByAttributes('product_id'=>$prodLoc->product_id);
ArrayProd将具有与同一产品相关的所有产品的模型。
如果要在gridview中显示此信息,您可能需要一个数据提供程序:
$prodLoc=ProductLocale::model()->findByPk(1);
$provider=CActiveDataprovider('ProductLocale',array (
'criteria'=>array(
'condition'=>'product_id='.$prodLoc->product_id,
));
您还可以在product_locale模型中定义新的自我关系:
public function relations()
{
return array(
'product' => array(self::BELONGS_TO, 'Product', 'product_id'),
'productsLocRelated'=>array(self::HAS_MANY,'ProductLocale',array('product_id'=>'product_id')),
);
}
因此,您可以通过以下方式获得所有产品:
$prodLoc=ProductLocale::model()->findByPk(1);
$arrayProdLoc=$prodLoc->productsLocRelated;
注意:我还没有测试代码