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!