检查关系是否与cdatacoluml的value属性相匹配


Check if relation isset with value attribute of CDataColumn

我知道可以在cdatacoluml的value属性中使用条件语句的形式,如cdatacoluml的'value'内部的问题条件语句所述。我想知道是否有一种方法来检查如果一个模型实际上有一个值设置之前试图显示它。我的问题出现了,因为我的模型源有一个可选的关系"国家",不一定为源的所有实例设置。访问源cdataccolumn中的国家名时,得到PHP

尝试获取非对象的属性

. .如果该网格中的任何源没有设置其国家。我

是否有任何方法来检查关系是否设置在列的"值"属性内?

你应该试试这个(你应该用需要的属性替换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 '';
}

有了这个getter,你只需要将它添加到gridview列中:

  'countryName',