2014-03-26 65 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