我在一个月前开始使用 Yii,发现它非常直观,但在小部件方面却有些混乱。
在我正在开发的应用程序中,虽然我有时使用 Active Record,但我不能使用它的关系,因为我正在使用 MyIsam(并且这不能更改)并且它不支持外键。
我的问题是我有一个CGridView并想向其中添加自定义数据,但是遇到了问题。
在正确的模型中,它与FK是一对多的关系,但正如我所说,我不能使用AR 的魔法。
我有这个,一个应用程序模型和一个配置文件模型。Profile 模型有一个应用程序FK。
我有一个函数,所以当我渲染 CGrid 时,我可以获取每个应用程序的名称,而不是它的 *id_app*。
public function appName($id){
$app= Yii::app()->db->createCommand()
->select('name')
->from('tbl_aplications a')
->where('a.id=:id_app', array(':id_app'=>$id))
->queryRow();
return $app;
}
在自动生成的模板中,在 Profile Admin.php 视图中,我得到:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'profile-application-grid',
'dataProvider'=>$model->search(), //maybe the issue is with this criteria? It is currently 'as-is' after the template generation
'filter'=>$model,
'columns'=>array(
'id',
'name',
array(
'name'=>'id_app',
'header'=>'Aplication',
这是我的问题,我已经尝试过(以及各种变体):
'value' => 'ProfileApplication::model()->appName($data->id_app)',
'value' => 'ProfileApplication::model()->appName(id_app)',
'value' => 'ProfileApplication::model()->appName("id_app")',
结果我得到的只是null,因为它传递的是实际字符串而不是每一行的值。如果我将直接 ID 传递给函数的查询,它会返回正确的值,例如->where('a.id=:id_app', array(':id_app'=>3))
是否需要更改搜索条件?我发现了类似的问题,但他们都使用 AR,例如Profile->application或类似的东西,正如我所说,由于MyIsam 的限制,我无法使用它。
任何提示都对这个新手表示赞赏,或者链接到关于类似问题的解决方案。