Dúvida - Como Listar Produtos De Uma Categoria?

Tenho uma base de dados conforme abaixo!

4176

imagem-pr.JPG

Gostaria de lista os produtos de uma determinada categoria.

Qual seria a melhor forma para isso?

Adriano,

Se no seu banco de dados, conter as FK criada, o Gii gera automático as relação.

Pegando por padrão que é gerado do Gii.

A relação do Model Categoria seria mais ou menos assim:


'produto_categorias'=>array(self::HAS_MANY,'Categoria',array('catregoria_id_cat' => 'id_cat')),

'produtos'=>array(self::HAS_MANY,'Produto',array('produto_id_prod'=>'id_produto'),'through'=>'produto_categorias'),

Se não for parecido com a relação acima, posta seu model Categoria.

Você irá chamar mais ou menos assim:


$model = Categoria::model()->findByPk(1);

foreach($model->produtos as $produto){

     echo $produto->nome.'<br>';

}

Newerton, acho que não consegui formula bem a minha pergunta.

Eu preciso listar os produtos de uma categoria e não listar a categoria do meu produto.

Exemplo:

4187

base.jpg

Listando produto da categoria Alimento:

Açúcar

Feijão

Macarão

Qual seria a melhor forma pra isso?

muito obrigado pela força…

Adriano,

Você deve ter me interpretado errado. Eu respondi exatamente sua dúvida!

Vou mostrar novamente abaixo o que postei, mais com comentário:


$model = Categoria::model()->findByPk(1); //Aqui está selecionado a categoria "Alimentos"


//Neste foreach vai listar todos os Produtos da categoria "Alimentos", 

// como pode ver to chamando uma relação ($model->produtos).


foreach($model->produtos as $produto){

     echo $produto->nome.'<br>';

}

Para listar todos os Produtos de 1 Categoria, você precisa obviamente chamar 1 categoria ou toda as Categoria primeiro.

Para listar todas as categorias:




$categorias = Categoria::model()->findAll();

foreach($categorias as $categoria){

	echo "<h1>{$categoria->nome}</h1>";

	foreach($categoria->produtos as $produto){

		 echo $produto->nome.'<br>';

	}

}



Posta a função relations() do seu model Categoria.