试图获得非对象的属性 - laravel 5.4

时间:2017-10-24 10:45:33

标签: laravel eloquent relationship

当我使用

时,我正在使用Laravel雄辩的关系
    {{$subject->cat}}

我收到如下的json回复

    {"id":13,"name":"Fsc","created_at":"2017-10-23 00:00:00","updated_at":"2017-10-23 00:00:00"}

因为我在这里有第二个对象“名字”我试过

    {{$subject->cat->name}}

但收到错误

    Trying to get property of non-object 

虽然我对其他表使用相同的方法并在此处复制相同的方法但是收到错误。

查看我的Blade文件代码,我在foreach循环中调用对象

      @foreach ($subjects as $subject)
                    <tr>
                      <td width="8%">{{$subject->id}}</td>
                      <td width="22%">{{$subject->subject}} </td>
                      <td width="22%">{{$subject->cat->name}}</td>
                        <!-- <a class="btn btn-success btn-sm" href="{{route('subjects.show', $subject->id)}}"><i class="fa fa-eye"></i></a> |  -->
                        <a href="{{route('subjects.edit', $subject->id)}}" class="btn btn-warning btn-sm"><i class="fa fa-pencil"></i></a> |
                          {!! Form::open(['route' => ['subjects.destroy', $subject->id], 'method' => 'DELETE', 'class' => 'delete-form']) !!}
                          {{ Form::button('<i class="fa fa-times" aria-hidden="true"></i>', ['class' => 'btn btn-danger btn-sm pull-left', 'type' => 'submit']) }}
                          {!! Form::close() !!}
                      </td>
                    </tr>
                    @endforeach 

4 个答案:

答案 0 :(得分:2)

首次使用json_decode($json);

采用JSON编码的字符串并将其转换为PHP变量。

然后

Use {{$subject->cat}}

答案 1 :(得分:1)

只需使用json_decode

$var = json_decode($subject, true);

然后你可以使用:

{{$subject->cat->name}}

查看更多here!

希望这能帮到你!

答案 2 :(得分:1)

试试这个

$cat = json_decode($subject->cat); // returns object {{ $cat['name'] }}

$cat = json_decode($subject->cat, true); // returns array {{ $cat['name'] }}

答案 3 :(得分:1)

你需要解码你的json,然后像这样使用:

$result = json_decode ($subject->cat);
echo $result->name;

使用您的变量名称代替$result

此处的见解是pastebin demo