2017-08-30 25 views
0

爲什麼我的關係'試圖獲取非對象的屬性'???試圖獲得非客體屬性Yii2

我有模型目的地與hasOne()來AddressDistrict

public function getDestinationAddressDistrict(){ 
return $this->hasOne(\common\models\AddressDistrict::className(), ['id' => 'DISTRICT']); 
} 

模型模型AdressDistrict任何字段:ID,propinsi_id,NAMA

public function attributeLabels() 
    { 
     return [ 
      'id' => 'ID', 
      'propinsi_id' => 'Propinsi ID', 
      'nama' => 'Nama', 
     ]; 
    } 

在控制器( actionIndex)我得到模型Destination:

$modelDestination = new Destination; 

,我傳遞給創建然後我傳給_form ..

_form我寫$modelDestination->destinationAddressDistrict->id ..和我有一個通知。任何解決方案?

+0

在創建您沒有有效的關係值。 – scaisEdge

回答

1

你的問題是,你已經創建的Destination一個新的實例,所以所有的字段都是空的,所以沒有辦法讓基於對DISTRICT值的有效關係,因爲DISTRICT尚未設置。

您有兩種選擇。你可以測試一個有效關係的存在性,像這樣;

if ($modelDestination->destinationAddressDistrict){ 
    //Do something with the `$modelDestination->destinationAddressDistrict->id` 
} 

左右即可以產生有效的關係,你可以分配的DISTRICT的默認值。

相關問題