Php 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(

我对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(
            '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;
注意:我还没有测试代码