Yii framework: usando dados de modelos relacionados ao Active Record para pesquisar
Cookbook do desenvolvimento de aplicativos do @iiii 1.1 explica um método para usar dados de modelos Active Record relacionados para pesquisar também os modelos relacionados. Este método é explicado nas páginas número 193 e 194. Tentei integrar esse método ao meu aplicativo, mas ele não funciona. alguém poderia me explicar se esse recurso ainda está disponível no Yii framework versão 1.1.8
Neste local também pude encontrar comentários para pesquisar modelos de registros ativos relacionados ao formulário de dados. Mas também não funciona.http: //www.yiiframework.com/doc/api/1.1/CDbCriteri
Tenho tabela de pedidos e tabela de usuários
tabela @Order e a tabela User têm relação um para muito
usuário tem muitos pedidos e o pedido tem exatamente um usuári
ntão, estou editando o seguinte CDbCriterial para incluir o nome de tabelas de usuário e o campo de email nas entradas de pesquisa de tabelas de pedido
tabela @Order possui as seguintes relações
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(
'comments' => array(self::HAS_MANY, 'Comment', 'order_id'),
'user' => array(self::BELONGS_TO, 'User', 'user_id'),
'orderstatus' => array(self::BELONGS_TO, 'Orderstatus', 'orderstatus_id'),
'commentCount' => array(self::STAT, 'Comment' , 'order_id')
);
}
Estas são as condições de pesquisa / filtro com o nome da tabela de usuário arquivado incluído
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('order_create_date',$this->order_create_date,true);
$criteria->compare('price',$this->price,true);
$criteria->compare('bank_account_number',$this->bank_account_number,true);
$criteria->compare('hardwaredetail_Id',$this->hardwaredetail_Id);
$criteria->compare('user_id',$this->user_id);
$criteria->compare('order_update_date',$this->order_update_date,true);
$criteria->compare('is_received',$this->is_received);
$criteria->compare('order_received_date',$this->order_received_date,true);
$criteria->compare('is_notify_by_email',$this->is_notify_by_email);
$criteria->compare('warehouse_offered_price',$this->warehouse_offered_price,true);
$criteria->compare('warehouse_offered_price_date',$this->warehouse_offered_price_date,true);
$criteria->compare('orderstatus_id',$this->orderstatus_id);
$criteria->together = true;
$criteria->with = array('user');
$criteria->compare('user.name',$this->user,true);
//$criteria->compare('user.name',$this->user->name);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
e a página de administração do pedido é editada para exibir o nome arquivado da seguinte forma
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'order-grid',
'dataProvider'=>$model->search(),
//'filter'=>$model,
'columns'=>array(
'id',
'order_create_date',
'price',
'bank_account_number',
array(
'name'=>'user',
'value'=>'$data->user->name'
),
),
));
Mensagem de erro retornada
Depois de resolver o problema de ambiguidade da coluna id, aplicando a solução que thaddeusmt deu, encontrei a seguinte mensagem de err
Agradecemos antecipadamente por qualquer ajud