有3个表文章,作者和大学
我正在为表格文章制作网格。每篇文章属于一位作者,每位作者都属于一所大学。我需要出示 University.name | 作者姓名 | 文章。*
在管理员视图
$gridWidget=$this->widget('bootstrap.widgets.TbGridView',array(
'id'=>'dados-cd-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'author_name'=>array(
'name' => 'author_name',
'value' => '$data->author->name'
),
'university_name'=>array(
'name' => 'university_name',
'value' => '$data->university->author->name'
),
...
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
),
),
));
在文章模型我有
public $author_name;
public $university_name;
public function rules()
{
...
return array(
array('author.name, university.name, ... ', 'safe', 'on'=>'searc
h'),
...
);
}
public function search()
{
$criteria=new CDbCriteria;
$criteria->with = array( 'author','author.university' );
$criteria->compare('author.name',$this->author_name,true);
$criteria->compare('university.name',$this->university_name,true);
...
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'attributes'=>array(
'author_name'=>array(
'asc'=>'author.name',
'desc'=>'author.name DESC',
),
'university_name'=>array(
'asc'=>'university.name',
'desc'=>'university.name DESC',
),
'*',
),
),
));
}
网格工作得很好。但是,当我尝试按 author_name 搜索或订购时,我收到一条错误消息。我会尝试翻译葡萄牙语的错误消息,但我不知道它是否像英语那样:“未定义的表:7 错误:表作者的条目丢失”
有趣的是,大学搜索和订购工作正常。而且我看不出它们之间的区别。
任何人都可以帮助我吗?
已编辑
我已经检查过数据库中的列名是否真的是“名称”在错误消息中,它显示的部分查询是“(WHERE author.name LIKE ycp0)”。我认为这是我的问题的关键,但我不知道具体如何。
已编辑
错误消息 错误 500:
CDb异常
CDbCommand falhou ao executar o comando SQL: SQLSTATE[42P01]: Undefined table:7 ERRO: faltando entrada para tabela "autor" na cláusula FROM LINE 1: ..."autor"."universidade_id"="universidade"."id" ) 哪里(自动...
^.执行的 SQL 语句为 SELECT COUNT(DISTINCT 't'.'id') FROM "artigo" 't' LEFT OUTER JOIN 'autor' 'auto' ON ('t'.'artigo'.'autor_id'=' autor'.'id') LEFT OUTER JOIN 'universidade' 'universidade' ON ('autor'.'universidade_id'='universidade'.'id') WHERE (autor.nome LIKE: ycp0)