2014-03-26 102 views
0

實在不好意思打擾你,但是我有一個Laravel 4教程涉及一些代碼noob問題的性質:Laravel 4雄辯試圖讓非對象

在本教程中,我們必須管理之間的關係多個表。 這裏是機型代碼:

<?php 
class Auteur extends Eloquent 
{ 
    public $timestamps = false; 
    public function livres() 
    { 
     return $this ->hasMany('Livre'); 
    } 
} 

另一種模式:

<?php 
class Livre extends Eloquent 
{ 
    public $timestamps = false; 
    public function auteur() 
    { 
     return $this ->belongsTo('Auteur'); 
    } 
} 

當我打電話:

Route::any('DynEloquent',function() 
{ 
    foreach(Livre::with('auteur')->get() as $livre) 
    echo '"'.$livre->titre.'" a été écrit par '.$livre->auteur->nom.'<br>'; 
}); 

我有一個ErrorException:試圖讓非對象的屬性顯然在$livre->auteur->nom

任何幫助將不勝感激,因爲我已經試圖找到我的方式在官方文檔和其他的東西,如關於雄辯關係類似的問題。 (即使我很確定我錯過了一件容易的事情)(原諒我的英語,因爲我是法國人。)

謝謝。

表auteurs: -id -nom -prenom -naissance

表裏弗: -id -titre -auteur_id

+0

看來$ livre不是一個對象。你可以試試'var_dump($ livre);'foreach循環內的結果是什麼? – ilpaijin

+0

瑪貝你沒有任何與導演的利弗,檢查! – angoru

+0

var_dump($ livre)給我一個可悲的對象的正常結果(我不張貼它,因爲它真的很長) – Tholl

回答

1

它看起來像你的關係$livre->auteur沒有返回任何數據,它可能是空的,這不是一個對象,然後你得到消息Trying to get property of non-object。爲了確保你可以這樣做:

Route::any('DynEloquent',function() 
{ 
    foreach(Livre::with('auteur')->get() as $livre) 
    { 
     dd($livre->auteur); 
    } 
}); 

你必須檢查旅遊的關係,如果他們真的指向正確$表和數據庫表,以查看它們是否填寫正確適當的關係數據。

+0

這是一個打字錯誤對不起,我編輯它:) – Tholl

+0

得到它,編輯提供一些關於在你的情況下這個錯誤的信息。 –

+0

好吧,我已經找到了答案感謝您的建議: 隨着安東尼奧的跟蹤方法,我發現我的一本書是關於一個未實現的ID,所以我有一本書與作者,但沒有這樣的條目作者ID在「auteurs」表中。我已經在數據庫中解決了這個問題,並且一切都運行良好。 對不起,很明顯... 再次感謝。 – Tholl