Yii Framework Forum: [Resolvido] Update Do Mestre Detalhe - Yii Framework Forum

Jump to content

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

[Resolvido] Update Do Mestre Detalhe Rate Topic: -----

#1 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 26 November 2012 - 08:49 PM

Boa Noite

Estou montando uma sistema de pedidos com uma tela mestre detalhe com o cabeçalho(pedido) e seus itens. Estou conseguindo visualizar na view update o pedido e os itens. Mas so esta mostrando um itens e há quatro cadastrados

meu controller


    public function actionUpdate($id)
	{
		
       
                $model=$this->loadModel($id);
                //$items=$this->actionItens();
                $items=$this->loadItems($id);
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['sysos']))
		{
			$model->attributes=$_POST['sysos'];
			if($model->save())
				$this->redirect(array('view','ID'=>$model->ID));
		}

		$this->render('update',array(
			'model'=>$model,
                        'items'=>$items,
                ));
	}



       public function loadItems($id)
	{
                $items=itenssysos::model()->find('IDSYSOS=:IDSYSOS', array(':IDSYSOS'=> $id,));
		//$items=itenssysos::model()->findByPk($id);
		if($items===null)
			 $items = new itenssysos;
                        //throw new CHttpException(404,'The requested page does not exist.');
		return $items;
               
	}



No load Itens , se eu substituir a função find() por findAll(), que eu acho que seria a mais correta ele gera um erro mostrando o pedido, mas não mostra nenhum item
0

#2 User is offline   Gustavo Gonçalves 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 40
  • Joined: 02-October 12
  • Location:Belo Horizonte, MG - Brasil

Posted 27 November 2012 - 06:47 AM

Olá, você está certo... tem que usar o findall, porque o find traz apenas 1 registro.

Exemplos:

Seleção simples:
$array_itens=Vendas02::model()->findAll('id_venda=:id_venda', array(':id_venda'=>$id ));


Seleção complexa:
			$param = $_GET['term']; 
			$criteria = new CDbCriteria;
			$criteria->condition = "nome LIKE :sterm OR sobrenome LIKE :sterm OR id LIKE :sterm";
			$criteria->params = array(":sterm"=>"%$param%");
			$criteria->limit = 20;
			$models = Cliente::model()->findAll($criteria);

0

#3 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 27 November 2012 - 12:18 PM

No caso de:
$items=itenssysos::model()->findAll('IDSYSOS=:IDSYSOS', array(':IDSYSOS'=> $id,));

$items já é uma array? Ou tenho de criar uma variável do tipo array e fazer um form com items para preencher a nova variável?
0

#4 User is offline   Newerton 

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

Posted 27 November 2012 - 07:12 PM

Junior,

Ele retorna um array de objetos.

Para percorrer todos os itens faz assim:

foreach($items as $item){
    echo $item->IDSYSOS;
}


Por curiosidade, ta usando firebird?
Newerton Vargas de Araújo
0

#5 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 27 November 2012 - 09:06 PM

View PostNewerton, on 27 November 2012 - 07:12 PM, said:


Por curiosidade, ta usando firebird?


Uso Mysql

Fazendo o que vc falou pego os dados retornados e jogo no dataprovider do TbGridView para obter uma tabela, ou o TbGridView não consegue ler o dados devolvidos pelo findall?

O que não estou conseguindo entender é que se na linha
$items=itenssysos::model()->findAll('IDSYSOS=:IDSYSOS', array(':IDSYSOS'=>$id,));


eu substituir por find() consigo retornar o registro (um único) da variável $id, mas se coloco findAll() ele gera um erro que acredito esteja no dataprovider do TbGridView. Pois todos os campos acima do TbGridView são mostrados, mas abaixo nada é mostrado.
0

#6 User is offline   Newerton 

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

Posted 28 November 2012 - 07:30 AM

Junior,

Para os GridView ou ListView, eu aconselho usar o CActiveDataProvider ou em último caso dependendo da necessidade o CArrayDataProvider.

Mais vou postar um modelo do CActiveDataProvider, ai você adiciona no GridView/ListVIew.

$gridDataProvider = new CActiveDataProvider('itenssysos', array(
                    'criteria' => array(
                        'condition' => 'IDSYSOS=:IDSYSOS',
                        'params' => array(':IDSYSOS'=>$id),
                    ),
                    'pagination' => array('pageSize' => 10),
                ));

$this->widget('bootstrap.widgets.TbGridView', array(
	'dataProvider'=>$gridDataProvider,
	'template'=>"{items}",
	'columns'=>array(),
));

This post has been edited by Newerton: 28 November 2012 - 07:30 AM

Newerton Vargas de Araújo
0

#7 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 28 November 2012 - 08:10 PM

obrigado
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