Yii Framework Forum: Problemas Com Método Search() Usando Dois Relacionamentos - Yii Framework Forum

Jump to content

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

Problemas Com Método Search() Usando Dois Relacionamentos Rate Topic: -----

#1 User is offline   guimede 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 08-March 13

Posted 08 March 2013 - 02:37 PM

Boa tarde a todos,

Estou desenvolvendo um CRUD de uma Agenda onde existem duas chaves estrangeiras, uma para o cliente, outra para o serviço da Agenda, na página de gerenciamento estou tendo problemas ao permitir que os dois campos sejam usados para busca, ou aceita a busca do cliente, ou aceita a busca do serviço, abaixo segue os trechos de código e o erro apresentado.

/* ERRO */

<h1>CDbException</h1>
<p>CDbCommand falhou ao executar o comando SQL: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'relationCliente.nome_cliente' in 'where clause'. The SQL statement executed was: SELECT COUNT(DISTINCT `t`.`idagenda`) FROM `agenda` `t` LEFT OUTER JOIN `servico` `servicoIdservico` ON (`t`.`servico_idservico`=`servicoIdservico`.`idservico`) WHERE (relationCliente.nome_cliente LIKE :ycp0) (/var/www/yii/framework/db/CDbCommand.php:541)</p><pre>#0 /var/www/yii/framework/db/CDbCommand.php(432): CDbCommand->queryInternal('fetchColumn', 0, Array)

/* ----------------------------------------- */

/* MODEL */

public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.

$criteria=new CDbCriteria;
$criteria->with=array('relationCliente');
$criteria->with=array('servicoIdservico');

$criteria->compare('idagenda',$this->idagenda);
$criteria->compare('relationCliente.nome_cliente',$this->cliente_idcliente,true);
$criteria->compare('horario_atendimento', $this->horario_atendimento,true);
$criteria->compare('servicoIdservico.titulo_servico',$this->servico_idservico,true);
$criteria->compare('comparecimento',$this->comparecimento,true);
$criteria->compare('obs_agenda',$this->obs_agenda,true);

return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}


public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('cliente_idcliente, horario_atendimento, servico_idservico', 'required'),
array('cliente_idcliente, servico_idservico', 'numerical', 'integerOnly'=>true),
array('comparecimento, obs_agenda', 'length', 'max'=>45),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('idagenda, relationCliente.nome_cliente, horario_atendimento, servicoIdservico.titulo_servico, comparecimento, obs_agenda', 'safe', 'on'=>'search'),
);
}


/* ----------------------------------------- */
/* admin.php */

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'agenda-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'idagenda',
array(
'name' => 'cliente_idcliente',
'value' => '$data->relationCliente->nome_cliente',
),
'horario_atendimento',
array(
'name' => 'servico_idservico',
'value' => '$data->servicoIdservico->titulo_servico',
),
'comparecimento',
array(
'class'=>'CButtonColumn',
),
),
)); ?>
/* ----------------------------------------- */

PS. as duas formas de consultam funcionam de forma independente, mas caso as duas fiquem ativas, uma delas não funciona.

Desde já agradeço a atenção de todos!
0

#2 User is offline   gbasto 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 70
  • Joined: 28-September 10
  • Location:Portugal

Posted 11 March 2013 - 11:45 AM

Pode mostrar como são as tabelas usadas nesse search()?
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