问题
I'm making an online shop. I have two models: Product and Category. Product can have one category, while category can have many products.
I've defined relationships in models. I can access categories and products. But I want to get all products from specific category. I've tried many examples of relational queries with "lazy" and "eager" approach from official documentation, but no success. Can you please explain how to implement it?
Here's my code:
Category controller:
public function relations()
{
return array(
'products' => array(self::HAS_MANY, 'Product', 'category_id'),
);
}
Product controller:
public function relations()
{
return array(
'category' => array(self::BELONGS_TO, 'Category', 'category_id'),
);
}
Thank you.
回答1:
You can do
Category::model()->with('products')->findByPk(1);
you can access fields like
$the_category->products->name
This returns array and you can see content for debugging purposes by
CVarDumper::Dump($the_category->products->name,100,true);
of you can use foreach loop to access each index
$products = $the_category->products;
foreach ($products as $the_product)
{
echo "Name: " . $the_product['name'] . "<br />";
}
来源:https://stackoverflow.com/questions/11330040/extract-data-from-relations