0

私は2つのテーブルを持っています。テーブル名とフィールドは以下のとおりです

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

私は1つのモデル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'),
        )
    )
)); 

しかし、2 番目のテーブルのフィールド (user_name) の値はリストに表示されません。私はたくさん検索し、多くのオプションを試しました。誰でもこの問題の解決策を教えてもらえますか よろしくお願いします

4

1 に答える 1

0

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

する必要があります

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

company には user_name がありません。

于 2015-10-21T14:47:27.820 に答える