【问题标题】:Not able to access multiple tables from CGridView无法从 CGridView 访问多个表
【发布时间】:2013-04-18 11:08:13
【问题描述】:

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

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

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

user_master - user_id、姓名、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 页面,我得到 未定义的变量:数据

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

提前致谢。

【问题讨论】:

    标签: database yii cgridview


    【解决方案1】:

    试试:

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

    Value 是一个字符串,要作为 PHP 表达式进行计算...

    【讨论】:

    • 感谢您的回复。现在我收到一个新错误。 “试图获取非对象的属性” ..\yii\framework\base\CComponent.php(606) : eval()'d code(1)
    • 'value' => '($data->getRelated(\'customer_master\')=== null)?\'无相关客户注册表\':$data->getRelated(\' customer_master\')->user_type',这救了我的命……它现在可以工作了……这是我数据库中数据问题的原因。
    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多