1

当我试图在 yii 的单个 CGridView 中显示来自多个数据库表的数据时,我遇到了一个问题。

我已经搜索并参考了足够数量的文章。但我无法解决我的问题。

我有 2 个表名为 user_master 和 customer_master。对于每个客户,user_master 中也会有一个主记录。表格如下——

user_master - user_id、name、email_id、状态 customer_master - customer_id、user_id、account_type、creation_date、状态

在 UserMaster.php 中,代码是...

<?php
public function relations()
{
return array('customer_master'=>array(self::HAS_ONE, 'CustomerMaster', 'user_id'),);
}
public function searchUsers()
{
public $user_type;
$criteria=new CDbCriteria;
$criteria->alias = 't';
$criteria->compare('t.user_id',$this->user_id);
$criteria->compare('t.name',$this->name,true);
$criteria->compare('t.email_id',$this->email_id,true);
$criteria->compare('t.status',$this->status);

$criteria->together = true; 
$criteria->with = array('customer_master');
$criteria->compare('customer_master.user_id',$this->user_id,true);
$criteria->compare('customer_master.user_type',$this->user_type,true);

return new CActiveDataProvider($this, array('criteria'=>$criteria, 
            'sort'=>array('defaultOrder'=>'user_id ASC',),));
}
?>

在 CustomerMaster.php 中...

<?php
public function relations()
{
return array('user_id' => array(self::BELONGS_TO, 'UserMaster', 'user_id'),);
} ?>

UserMasterController.php 的代码如下..

<?php
public function actionAdmin()
{
    $model=new UserMaster('search');
    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['UserMaster']))
        $model->attributes=$_GET['UserMaster'];

        $this->render('admin',array(
            'model'=>$model, ));
}
?>

在 userMaster/admin.php

<?php

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'user-master-grid',
    'dataProvider'=>$model->searchUsers(),
    'filter'=>$model,
    'columns'=>array(
        'user_id',
        'name',
        'status',
                'email_id',
        array(
            'name' => 'customer_master.user_type',
                        //'header' => 'customer_master.user_type',
            **'value' => $data->customer_master->user_type,**
                     ),

        array(
            'class'=>'CButtonColumn',
        ),
    ),
));
?>

通过调用 userMaster/admin 页面,我得到了Undefined variable: data

请任何人帮助我解决这个问题。

提前致谢。

4

1 回答 1

0

尝试:

'value' => '$data->customer_master->user_type',  // as a string!

是一个字符串,要作为 PHP 表达式进行评估...

于 2013-04-18T11:23:46.417 回答