0

tbl_code と tbl_user の 2 つのテーブルを持つ単純なデータベースがあります。

**tbl_code**
id(PK)
accesscode
createdby(FK references tbl_user.id)
accesstime

**tbl_user**
id (PK)
username
password

リストビューで以下を表示しようとしています

  • ID (tbl_code.id)
  • アクセスコード
  • createdby - (これにより、ユーザー テーブルからユーザー名が表示されます)
  • アクセス時間

現在のコントローラ:

$dataProvider=new CActiveDataProvider('Code');
    $this->render('index',array(
        'dataProvider'=>$dataProvider,
    ));

インデックス ビュー

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_view',
)); ?>

そして最後に _view

<div class="view">

    <b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>
    <?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('accesscode')); ?>:</b>
    <?php echo CHtml::encode($data->accesscode); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('createdby')); ?>:</b>
    <?php echo CHtml::encode($data->createdby); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('accesstime')); ?>:</b>
    <?php echo CHtml::encode($data->accesstime); ?>
    <br />

    <b><?php echo CHtml::encode($data->getAttributeLabel('messagecount')); ?>:</b>
    <?php echo CHtml::encode($data->messagecount); ?>
    <br />


</div>

$dataprovider 基準でこれら 2 つのテーブルを結合する必要がありますか、それともこれを達成するためのより良い方法はありますか? まだ Yii を理解しているので、助けていただければ幸いです。

4

1 に答える 1

0

コードで多くの考えを見落とす可能性があるため、必要なもののいくつかを示します。

モデルでは

モデルでは、存在する関係を示す必要があります。

このUserモデルをコードにリンクするリレーションを定義する必要があります

public function relations(){
    return array(
        'codes'=>array(self::HAS_MANY, 'Code', 'createdby'),
    );
}

そして、Codeあなたは持っているでしょう

public function relations(){
    return array(
        'author'=>array(self::BELONGS_TO, 'User', 'createdby'),
    );
}

コントローラーまたはビューでモデルを呼び出すときに、モデルをリンクできるようになりました

データ プロバイダー

データ プロバイダーでは、コードのロード中にロードする必要がある関連モデルを示します。

$dataProvider=new CActiveDataProvider('Code', array(
    'criteria'=>array(
        'with'=>array('author'),
    ),
));

景色

ビューで、作成者を表示できます。

<?php echo CHtml::encode($data->author->getAttributeLabel('username')); ?>:</b>
<?php echo CHtml::encode($data->author->username); ?>
于 2013-04-04T11:58:33.967 に答える