0

ユーザープロファイルビューcountry nameの代わりに表示したい(ユーザープロファイルtblのFKです)。country idcountry id

誰でもこれで私を助けることができますか?

これは、Country モデルも持つビュー コントローラー/アクションです。

public function actionView($id) 
            {

        $model = new TblUserProfile;

        $model = TblUserProfile::model()->find('user_id=:user_id', array(':user_id' => $id));


      $countrymodel =  new Country;

       $countrymodel = Country::model()->findAll();
//       var_dump($countrymodel->name);
//       die();
        $this->render('view', array(
            'model' => $model ,
            'country' =>$countrymodel

        ));
    }

これが私の見解です

<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('user_id')); ?>:</b>
    <?php echo CHtml::encode($data->user_id); ?>
    <br />


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

    <br />
    <b><?php

     // $model = TblUserProfile::model()->find('country_id=:country_id', array(':user_id' => $id));


//echo CHtml::encode($model->getAttributeLabel('country')); ?>:</b>
    <?php// echo CHtml::encode($model->name);

        ?>

    <br />

</div>

今、上のビューに国名を表示したいと思います。

これらは、国とユーザー プロファイル テーブルの関係です。

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(
            'user' => array(self::BELONGS_TO, 'TblUser', 'user_id'),
            'country' => array(self::BELONGS_TO, 'country', 'country_id'),
            'state' => array(self::BELONGS_TO, 'state', 'state_id'),
            'city' => array(self::BELONGS_TO, 'city', 'city_id')

        );
    }
4

3 に答える 3

3

次のコードを使用します。

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

国モデルでは、国名の列はnameです。

関係が整っているので、それを使用して各ユーザーの関連国にアクセスできます。

詳細ビューでは、次のように変更されます。

// instead of 'country_id'
array(
    'name'=>'country_id',
    'value'=>$model->country->name
)

CDetailViewドキュメントを読んで、さらに多くのことを変更する方法を確認してください。

于 2012-10-15T08:32:02.623 に答える
2

私は使うだろう:

$model = TblUserProfile::model()->with('country')->find('user_id=:user_id', array(':user_id' => $id));

with('country') の説明: 文字列 country は、配列関係キーから取得されます。

次に、使用するビューに表示するには:

$model->country->CountryName;
  • $モデルが含まれています
  • country には、関係外部キーによって結合された国の「モデル」が含まれています
  • CountryName は、Country テーブルの列名です。

これは、MVC の方法で行うための推奨される方法です。私の例と上記の例の両方が機能しますが、上記の例ではビューにプロセス/ロジックの決定が多くあり、モデルが太いものであり、可能なすべてのロジック/処理を含む必要があるMVCの概念を破り、コントローラーがこれをプルしますデータをビューに提供します。

于 2012-10-15T11:22:00.177 に答える