Extract data from Relations

2019-02-27 22:50发布

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条回答
爷的心禁止访问
2楼-- · 2019-02-27 23:17

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 />";
}
查看更多
登录 后发表回答