2012-07-04 53 views
1

我正在开一家网上商店。我有两个型号:ProductCategoryProduct可以有一个类别,而类别可以有很多产品。从关系中提取数据

我在models中定义了关系。我可以访问类别和产品。但我想从特定类别获得所有产品。我从官方文档中用“懒惰”和“热切”的方法尝试过很多关系查询的例子,但没有成功。你能解释一下如何实现它吗?

这里是我的代码:

类别控制器:

public function relations() 
{ 
    return array(
     'products' => array(self::HAS_MANY, 'Product', 'category_id'), 
    ); 
} 

产品控制器:

public function relations() 
{ 
    return array(
     'category' => array(self::BELONGS_TO, 'Category', 'category_id'), 
    ); 
} 

谢谢。

+0

将您的想法付诸实践,您可以将其标记为帮助他人的答案 –

回答

1

你可以做

Category::model()->with('products')->findByPk(1); 

你可以访问领域,如

$the_category->products->name 

这将返回数组,您可以通过

CVarDumper::Dump($the_category->products->name,100,true); 

看到debugging purposes内容,你可以使用foreach循环访问每个index

$products = $the_category->products; 
foreach ($products as $the_product) 
{ 
    echo "Name: " . $the_product['name'] . "<br />"; 
}