0

CDataColumn の「値」内の条件ステートメントの質問で概説されているように、CDataColumn の値属性内で条件ステートメントの形式を使用できることを認識していますモデルを表示する前に、実際に値が設定されているかどうかを確認する方法があるかどうか疑問に思っていました。私の問題は、モデル Source に、Source のすべてのインスタンスに対して必ずしも設定されていないオプションのリレーション「country」があるために発生します。したがって、Source CDataColumn で国名にアクセスすると、PHP が取得されます。

非オブジェクトのプロパティを取得しようとしています

.. そのグリッド内のいずれかのソースに国が設定されていない場合。私

リレーションが列の「値」属性内に設定されているかどうかを確認する方法はありますか?

4

1 に答える 1

1

これを試してください(name必要な属性に置き換える必要があります):

array(
  'name'=>'country',
  'value'=>'(isset($data->country)) ? $data->country->name : ""',
),

Source モデルで getter を使用することもできます。

public function getCountryName()
{
  // I assume country_id is the foreign key
  if (isset($this->country_id) && isset($this->country))
    return $this->country->name;

  return '';
}

このゲッターを使用すると、これを gridview 列に追加するだけで済みます。

  'countryName',
于 2013-04-23T14:20:21.743 に答える