Yii Framework Forum: Dúvida - Como Listar Produtos De Uma Categoria? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Dúvida - Como Listar Produtos De Uma Categoria? a categoria tem relação Muitos p/ Muitos Rate Topic: -----

#1 User is offline   Adriano Mendes 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 13-October 11
  • Location:Brazil

Posted 30 April 2013 - 11:35 AM

Tenho uma base de dados conforme abaixo!
Attached File  imagem-pr.JPG (39.65K)
Number of downloads: 24

Gostaria de lista os produtos de uma determinada categoria.
Qual seria a melhor forma para isso?
0

#2 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 801
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 30 April 2013 - 02:22 PM

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 Vargas de Araújo
0

#3 User is offline   Adriano Mendes 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 13-October 11
  • Location:Brazil

Posted 02 May 2013 - 02:49 PM

View PostNewerton, on 30 April 2013 - 02:22 PM, said:

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:
Attached File  base.jpg (44.07K)
Number of downloads: 16

Listando produto da categoria Alimento:
Açúcar
Feijão
Macarão

Qual seria a melhor forma pra isso?

muito obrigado pela força...
0

#4 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 801
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 03 May 2013 - 08:58 AM

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.

This post has been edited by Newerton: 03 May 2013 - 09:01 AM

Newerton Vargas de Araújo
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users