hasMany relationship Laravel 5.4尝试获取非对象的属性

时间:2017-06-01 17:43:12

标签: php laravel-5.4

我的模特中有一个关系,有外键,受保护的桌子。

这是我的模特:

Lot.php:

<?php

namespace App;


class Lot extends Model
{

    protected $table = 'auct_lots_full';

    protected $primaryKey = 'lot_id';


    public function comments()
    {
        return $this->hasMany(Comment::class,'lot_id', 'lot_id');
    }

}

比相关型号Comment.php:

<?php

namespace App;


class Comment extends Model
{

    public function lot()
    {
        return $this->belongsTo(Lot::class, 'lot_id', 'lot_id');
    }
}

在我看来,我试着这样做:

@foreach ($comments as $comment)

   <dt>{{ $comment->lot }}</td>

@endforeach

结果如下:

  

{&#34; lot_id&#34;:391959148&#34;日期&#34;:&#34; 2017年5月21日&#34;&#34;公司&#34;:&#34; MITSUBISHI&#34;&#34; model_year_en&#34; 2005&#34;}

在视野中我只需要获取公司信息,我这样做:

 @foreach ($comments as $comment)
    <td> {{ $comment->lot->company }}</td>
@endforeach

此结果错误:

  

尝试获取非对象的属性

我尝试这样做:

@foreach ($comments as $comment)
    <td>
        @foreach($comment->lot as $lot)
           {{ $lot->company }}
        @endforeach
    </td>
@endforeach

它也会出错:

  

尝试获取非对象的属性

如何让$comment->lot->company工作?

1 个答案:

答案 0 :(得分:1)

谢谢来自laracasts

的Snapey

当你这样做时

@foreach ($comments as $comment)
    <td> {{ $comment->lot->company }}</td>
@endforeach 

你依赖于每一条评论都有很多,而且每一个公司都有一家公司

您可以使用它来防止空属性

@foreach ($comments as $comment)
    <td> {{ $comment->lot->company or '---'}}</td>
@endforeach

然后即使批次没有公司

,循环也会继续