当我试图在 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。
请任何人帮助我解决这个问题。
提前致谢。