2015-11-02 128 views
2

我想獲取我已設置的關係的id。Laravel關係錯誤 - 試圖獲取非對象的屬性

模型

public function plateContainer() 
{ 
    return $this->belongsTo('App\Models\PlateContainer'); 
} 

PlateContainer模型

public function plate() 
{ 
    return $this->hasMany('App\Models\Plate'); 
} 

public function equipmentStatusCode() 
{ 
    return $this->hasOne('App\Models\EquipmentStatusCode'); 
} 

EquipmentStatusCode模型

public function plateContainer() 
{ 
    return $this->belongsTo('App\Models\PlateContainer'); 
} 

當我嘗試。

$p = Plate::findOrFail(4); 
    $p->plateContainer->equipmentStatusCode; 

    return $p; 

我得到Trying to get property of non-object。我做錯了什麼?

+0

'plateContainer'不是'$ p'的屬性,而是一種方法。這就是你得到錯誤的原因。 – Daan

+0

@達恩我怎麼去解決這個問題? – user3641381

+0

指定table'plates'和'equipment_status_codes'的表結構 –

回答

2

試試這個:

我只是試圖建立一個類似的情況。我同樣修改了代碼:

$p = Plate::findOrFail(4); 

$p->equipmentStatusCode->plateContainer; 
return $p; 

我能夠獲取結果數組。

+0

這是我的錯。這個人工作得到第一個錯誤是因爲我的數據庫中沒有任何東西(我知道這很愚蠢)。感謝大家的努力! – user3641381

+0

很高興您找到解決方案。謝謝 :) – ArtisanBay

2

plateContainerequipmentStatusCode是一個函數。使用圓括號。

添加以下相對於板型號:

public function equipmentStatusCode() 
{ 
    return $this->hasManyThrough('App\Models\EquipmentStatusCode', 'App\Models\PlateContainer'); 
} 

並嘗試:

$p = Plate::findOrFail(4); 
$p->equipmentStatusCode(); 

return $p; 
+0

我已經試過了。我得到'未定義的屬性:Illuminate \ Database \ Eloquent \ Relations \ BelongsTo :: $ deviceStatusCode' – user3641381

+0

您必須在deviceStatusCode後添加圓括號。我編輯了我的asnwer。 – kotapeter

+0

我給你更新的代碼試一試,現在我得到'調用未定義的方法Illuminate \ Database \ Query \ Builder :: equipmentStatusCode()' – user3641381

相關問題