Laravel中的奇怪之处在于dd()它没关系,没有它' s不是一个对象'?

时间:2017-10-29 21:43:53

标签: php laravel eloquent

代码:

    @foreach($room->students as $student)
         <li>
         {{ $student->student->first_name }}
         <a href="{{ route('student.show', $student) }}">{!! "{$student->student} {$student->last_name}" !!}</a>
        </li>
   @endforeach

这是$student

的关系
public function student()
    {
        return $this->belongsTo(Student::class);
    }

$student实际上是room_student模型。此模型belongsTo student

问题是什么?

$student->student->first_name产生此错误:

enter image description here

然而,这应该有效,因为$student->student因为关系而给出Student对象(我也提供了代码)。

因此,将此行{{ $student->student->first_name }}更改为{{ dd($student->student) }}效果很好并产生此结果:

enter image description here

更好的是,看看我们将从{{ dd($student->student->first_name) }}

获得什么

enter image description here

噢,太棒了,是吗?它有效吗?

不,因为一旦我取消dd()功能,它就像这样:{{ $student->student->first_name }} ......

enter image description here

哦,再说一次。你好黑暗我的老朋友......

那么这里发生了什么?为什么?为什么dd()完美无缺?没有没有?发生了什么事?

die(var_dump())关于此

enter image description here

这是对象。 100%。到底是怎么回事?可能的框架错误?

2 个答案:

答案 0 :(得分:1)

好像你需要把条件放在

之前
@if(isset($student->student->first_name)
     $student->student->first_name
@endif

当你在你的代码中放入dd($ student-&gt; student)时,它是你循环中的第一条记录,你在循环中在对象中的一个元素上得到了这个错误,因为你没有将学生关系附加在循环中的一个元素上。

这就是为什么你需要依照我上面提到的条件来附加。

答案 1 :(得分:0)

之前我遇到过这样的问题,我使用多维数组来传回数据。所以在这种情况下你可能不得不使用它,确实非常奇怪。希望这会有所帮助。

$student->student['0']['first_name'];