Ich habe eine relationale Abfrage einer Buchausgabe die den deutschen Namen (id für deutsch ist 150) der Sprachversion des Buchs zeigen soll und außerdem das Cover angeben soll - soweit vorhanden. Falls nicht verhanden, soll stattdessen ein dummy-Bild ausgegeben werden:
$model=Edition::model()->with(array(
'languagename'=>array(
'condition'=>'nameinwhatlanguage=150',
),
'bookcover'=>array(
'select'=> array(
'*',
'COALESCE(cover, \'dummycover.jpg\') as coverimage',
),
)))->findByPk($id);
Die Abfrage produziert soweit keine Fehlermeldung.
Dies:
$this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'title',
'isbn10',
'isbn13',
array(
'name'=>Yii::t('edition', 'Language'),
'value'=>$model->languagename->name,
),
array(
'name'=>'bookcover.cover',
'value'=>$model->bookcover->coverimage,
'bookcover.coverimage',
schlägt jedoch fehl, bei coverimage kommt: Trying to get property of non-object, unabhängig davon ob ein Cover existiert oder nicht. Das dazugehörige SQL aus dem trace funktioniert und liefert entweder das Cover oder ‘dummyimage.jpg’. Nach abrufen des Models findet sich aber auch kein coverimage in print_r($model), noch dummyimage.jpg oder ein eigentliches Cover. Wo versteckt sich coverimage im abgerufenen Objekt?
Ich verwende YII 1.1.12 und PostgreSQL 9.1