Problemas con relaciones con datos no obligatorios

Hola como estan , tengo un problema con lo siguiente, tengo una tabla llamada LIQUIDACIONES, un campo clave foreanea "dependencia" , q al momento de las acciones alta y edicion esta representado por un dropDownList q se llena con campo nombre de la tabla SUBSAF, el tema es q no es obligatorio llenarlo. En la pagina admin , para reemplazar el id por el nombre

utilizo :

array (‘name’=>‘dependencia’,‘value’=>’$data->relacion_subsaf->nombre’,‘type’=>‘text’),

relacion_subsaf: es la relacion q esta definida en mi modelo: ‘relacion_subsaf’ => array(self::BELONGS_TO, ‘SubSaf’, ‘dependencia’), y q me permite cambiar el id por su NOMBRE.

el error q me da es :

Trying to get property of non-object

C:\wamp\www\yii\framework\base\CComponent.php(612) : eval()'d code(1)

por lo q lei el error se debe a que como la relacion en muchos casos no existe, es decir no tiene q mostrar.

como puedo solucionar esto? es decir mostrar en la grilla del admin la descripcion en un campo q puede o no tener datos. gracias




...

array ('name'=>'dependencia','value'=>'$data->relacion_subsaf ? $data->relacion_subsaf->nombre : ""','type'=>'text'), 

...



array (‘name’=>‘dependencia’,‘value’=>’$data->relacion_subsaf ? $data->relacion_subsaf->nombre : “”’,‘type’=>‘text’),

MUCHISIMAS GRACIAS ME SIRVIO PERFECTAMENTE!, BASICAMENTE COMO TRABAJARIA LA LINEA CON EL SIGNO "? ", SERIA COMO UN IF?, ASI ENTIENDO LA LOGICA

si es como un if-else directo, es el operador ternario, tipico caso es el de maximo de un valor:




function maximo(val1,val2) {

  //    parte 1 es booleano  ? parte 2 se ejecuta si parte1 true : parte 3 se ejecuta si parte 1 false

  return (val1 > val2) ? (val1) : (val2);

}



Si alguna vez te da problemas pon los parentesis y si es compleja la operación utiliza un if-else clásico.