2012-07-04 3 views
1

Я делаю интернет-магазин. У меня две модели: Product и Category. Product может иметь одну категорию, в то время как категория может иметь много продуктов.Извлечь данные из Отношения

Я определил отношения в 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 

Это возвращает массив, и вы можете увидеть контент для debugging purposes по

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

из вы можете использовать foreach цикл для доступа к каждому index

$products = $the_category->products; 
foreach ($products as $the_product) 
{ 
    echo "Name: " . $the_product['name'] . "<br />"; 
} 
Смежные вопросы