Estou tentando montar uma tabela de 'Categorias' com a seguinte estrutura:
CREATE TABLE IF NOT EXISTS `categoria` (
`IDCategoria` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) NOT NULL,
`descricao` text NOT NULL,
`parent_id` int(11) NOT NULL,
`top` int(11) NOT NULL,
`ordem` int(11) DEFAULT '0',
`status` int(11) NOT NULL,
PRIMARY KEY (`IDCategoria`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
- na model:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'categoria_parent' => array(self::BELONGS_TO, 'Categoria', 'parent_id', 'condition' => 'parent_id <> 0'), //the column in 'parent' containing 'this' id
'categoria_childs' => array(self::HAS_MANY, 'Categoria', 'parent_id'),
);
}
- Na minha view ADMIN da model 'Categorias' tenho isso:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'categoria-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'IDCategoria',
'parent_id',
'status',
'nome',
array(
'name'=>'nome',
//'header'=>'Setor',
'value'=>'$data->parent_id > 0 ? $data->getChilds($data->parent_id,$data->nome) : $data->nome',
'htmlOptions'=>array('style'=>'text-align:center;'),
),
'ordem',
array(
'class'=>'CButtonColumn',
),
),
)); ?>
- E grande questão é o seguinte...Queria listar na minha Grid as categorias dessa forma:
Panelas > Caldeirões
Panelas > Caçarolas
Panelas > Caçarolas > Alumínio
Panelas > Pressão
Utensílios
Mesas
De forma que eu pudesse passar o $parent_id e ele me retornasse os elementos:
Algo como $data->getChilds($data->parent_id,$data->nome);
Alguma ideia?
Ja pesquisei tem muitos lugares, mas nenhum na mesma situação que eu.
HEEEEEEEEEEEELP...
CREATE TABLE IF NOT EXISTS `categoria` (
`IDCategoria` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) NOT NULL,
`descricao` text NOT NULL,
`parent_id` int(11) NOT NULL,
`top` int(11) NOT NULL,
`ordem` int(11) DEFAULT '0',
`status` int(11) NOT NULL,
PRIMARY KEY (`IDCategoria`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
- na model:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'categoria_parent' => array(self::BELONGS_TO, 'Categoria', 'parent_id', 'condition' => 'parent_id <> 0'), //the column in 'parent' containing 'this' id
'categoria_childs' => array(self::HAS_MANY, 'Categoria', 'parent_id'),
);
}
- Na minha view ADMIN da model 'Categorias' tenho isso:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'categoria-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'IDCategoria',
'parent_id',
'status',
'nome',
array(
'name'=>'nome',
//'header'=>'Setor',
'value'=>'$data->parent_id > 0 ? $data->getChilds($data->parent_id,$data->nome) : $data->nome',
'htmlOptions'=>array('style'=>'text-align:center;'),
),
'ordem',
array(
'class'=>'CButtonColumn',
),
),
)); ?>
- E grande questão é o seguinte...Queria listar na minha Grid as categorias dessa forma:
Panelas > Caldeirões
Panelas > Caçarolas
Panelas > Caçarolas > Alumínio
Panelas > Pressão
Utensílios
Mesas
De forma que eu pudesse passar o $parent_id e ele me retornasse os elementos:
Algo como $data->getChilds($data->parent_id,$data->nome);
Alguma ideia?
Ja pesquisei tem muitos lugares, mas nenhum na mesma situação que eu.
HEEEEEEEEEEEELP...