【问题标题】:Laravel get property of non objectLaravel 获取非对象的属性
【发布时间】:2016-02-12 20:43:49
【问题描述】:

当我尝试确定一个对象是否为空时,它会告诉我:

试图获取非对象的属性

我是这样做的:

 $lastTicket = Auth::user()->ticket->last()->ticketid;
    if($lastTicket->isEmpty())
    {
        $lastTicket = 0;
    }

显然 Auth::user()->ticket->last();还没有记录。我该怎么做?我正在与 Laravel 合作。

【问题讨论】:

  • 根据您上面的内容,ticketid 是属性而不是对象。因此,您不能使用对象表示法或在$lastTicket 上调用诸如->isEmpty(); 之类的方法。

标签: php laravel-5


【解决方案1】:

正确答案是:

$lastTicket = !Auth::user()->ticket->last() ? Auth::user()->ticket->last()->ticketid+1 : 0;

因为如果它为空,它将默认返回 0。

【讨论】:

    【解决方案2】:

    在获取属性之前,您需要检查集合不为空:

        if(Auth::user()->ticket->last()->isEmpty())
        {
           $lastTicket = 0;
        }
        else
        {
            $lastTicket = Auth::user()->ticket->last()->lastId;
        }
    

    简而言之:

    $lastTicket = !Auth::user()->ticket->last()->isEmpty() ? $lastTicket = Auth::user()->ticket->last()->lastId : 0;
    

    【讨论】:

    • 感谢您的回复,但当我这样做时,它告诉我:调用未定义的方法 Illuminate\Database\Query\Builder::isEmpty()
    • 如果 last() 关系是 OneToOne 这个构造必须有效: $lastTicket = !empty(Auth::user()->ticket->last()) ? $lastTicket = Auth::user()->ticket->last()->lastId : 0;
    • 当我尝试时: $lastTicket = Auth::user()->ticket->last()->ticketid; if($lastTicket->isEmpty()) { $lastTicket=1; } var_dump($lastTicket);
    • 抛出异常:在非对象上调用成员函数isEmpty()
    • 我发现你只能在收集母猪上使用 isEmpty() 这不起作用。
    【解决方案3】:

    首先看看here 是否可以解决您的问题。无论如何,如果您尝试加载关系,您应该查看official documentation

    动态属性

    Eloquent 允许您通过动态属性访问您的关系。 Eloquent 会自动为你加载关系,甚至可以知道是调用 get(对于一对多关系)还是 first(对于一对一关系)方法。然后可以通过与关系同名的动态属性访问它。例如,使用以下型号 $phone:

    class Phone extends Eloquent {
    
       public function user()
       {
           return $this->belongsTo('User');
       }
    
    }
    
    $phone = Phone::find(1);
    

    而不是像这样回显用户的电子邮件:

    echo $phone->user()->first()->email;
    

    可以简写为:

    echo $phone->user->email;
    

    【讨论】:

      猜你喜欢
      • 2015-09-22
      • 2017-03-20
      • 2014-03-25
      • 2015-01-25
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多