【问题标题】:Laravel 4 Eloquent Trying to get property of non-objectLaravel 4 Eloquent 试图获取非对象的属性
【发布时间】:2014-05-05 03:48:27
【问题描述】:

真的很抱歉打扰大家,但我有一个关于 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>';
});

我有一个错误异常:试图在$livre-&gt;auteur-&gt;nom 上获取非对象的属性。

任何帮助都将不胜感激,因为我已经尝试在官方文档和其他内容中找到自己的方式,例如关于 eloquent relationship 的类似问题。 (即使我很确定我错过了一件简单的事情)(原谅我的英语,因为我是法国人。)

谢谢。

表作者: -ID -名义 -prenom -诞生

餐桌: -ID -滴度 -auteur_id

【问题讨论】:

  • 似乎 $livre 不是一个对象。你能试试 foreach 循环中var_dump($livre); 的结果是什么吗?
  • 也许你没有任何导演,检查一下!
  • var_dump($livre) 遗憾地给了我一个对象的正常结果(我没有发布它,因为它真的很长)
  • @angoru 在某种程度上你实际上是正确的 :) 抱歉

标签: php laravel laravel-4 relationship eloquent


【解决方案1】:

看起来您的关系$livre-&gt;auteur 没有返回任何数据,它可能为null,它不是一个对象,然后您收到消息Trying to get property of non-object。确保你能做到:

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

您必须检查游览关系,如果它们确实指向正确的 $tables 和您的数据库表,以查看它们是否正确填充了正确的关系数据。

【讨论】:

  • 知道了,已编辑以提供有关您案例中此错误的一些信息。
  • 好的,感谢您的建议,我找到了答案:使用 antonio 的跟踪方法,我发现我的一本书与未实现的 ID 有关,所以我有一本作者的书但在“auteurs”表中没有此作者 ID 的条目。我已经在数据库中修复了这个问题,一切都运行得很好。很抱歉,这很明显......再次感谢。
猜你喜欢
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2015-09-22
  • 2017-03-20
相关资源
最近更新 更多