0

我有两个表,表名和字段在下面列出

company(tbl_id,sales_id,user_id,assigned_on)
users(user_id,user_name)

我想执行以下查询

SELECT assigned_on,u.user_name FROM company c LEFT JOIN users u ON c.user_id=u.user_id WHERE c.`sales_id`=2

我有一个模型 Company.php 我定义了以下关系

 public function relations()
        {
            // NOTE: you may need to adjust the relation name and the related
            // class name for the relations automatically generated below.
            return array(
            'company'=>array(self::HAS_MANY,'Users',array('user_id'=>'user_id'))

            );
        }

在相应的函数中我写了代码

$criteria=new CDbCriteria;
$criteria->select   =   "user_id,assigned_on";
$criteria->compare('t.sales_id',$salePersonID);
            $criteria->with=array(
                'company'
            );
            $criteria->together = true;
$provider   =    new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
            'pagination'=>array('pageSize'=>'25')
        ));
return $provider;

我通过提供者来查看 在视图文件中我写了代码

<?php $this->widget('bootstrap.widgets.TbGridView',array(
    'type'=>'striped bordered condensed',
    'id'=>'users-grid',
    'dataProvider'=>$provider,  
    'template'=>"<table style='width: 100%'><tr><td>{pager}</td><td style='vertical-align:bottom;text-align: right;'>{summary}</td></table>\n{items}\n{pager}",
    'columns'=>array(
        array(
            'name'=>'assigned_on',          
            'header'=>'Assigned On',
            'htmlOptions'=>array('class'=>'cname'),
        ),      
        array(
            'name'=>'user_name',
            'value'=>'$data->company->user_name',           
            'header'=>'Contact Person',
            'htmlOptions'=>array('class'=>'cname'),
        )
    )
)); 

但是第二个表的字段(用户名)的值没有显示在列表中。我搜索了很多并尝试了很多选项。任何人都可以让我知道这个问题的解决方案提前谢谢

4

1 回答 1

0

'value'=>'$data->company->user_name',

应该

'value'=>'$data->company->user->user_name',

公司没有用户名。

于 2015-10-21T14:47:27.820 回答