【问题标题】:Trying to get property of non-object - laravel 5.4试图获取非对象的属性 - laravel 5.4
【发布时间】:2018-04-05 03:06:35
【问题描述】:

我在使用 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 

【问题讨论】:

    标签: laravel eloquent relationship


    【解决方案1】:

    首次使用json_decode($json);

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

    然后

    Use {{$subject->cat}}
    

    【讨论】:

    • 我正在寻找 laravel 雄辩的方法
    【解决方案2】:

    只需使用json_decode 喜欢:

    $var = json_decode($subject, true);
    

    然后你可以使用:

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

    查看更多here!

    希望对你有帮助!

    【讨论】:

    • 令人惊奇的是,我对其他关系使用了与 laravel 相同的方法来实现这种魔力。 $subject 在 foreach 循环之后出现。你能帮我用 laravel 方法吗?
    • json_decode只有你需要使用!现在试试,我更新了我的答案!
    • 抱歉没有成功
    • json_decode 转换为 PHP 变量!你是怎么尝试的?
    • 你也可以这样做:dd(json_decode($subject-&gt;cat, true)); 这给了你{"id":13,"name":"Fsc","created_at":"2017-10-23 00:00:00","updated_at":"2017-10-23 00:00:00"}
    【解决方案3】:

    试试这个

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

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

    【讨论】:

    • 第一种方法出错。 (1/1)FatalErrorException 调用 null 上的成员函数 toArray() 以获取第二个方法的错误,如我的问题标题。但最后一个方法是有效的。但作为我的读数,我们可以在没有 json 的情况下得到结果,我使用这种方法 youtube.com/…
    【解决方案4】:

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

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

    用你的变量名代替$result

    这里的洞察力是pastebin demo

    【讨论】:

    • Laravel 刀片文件不接受这个变量我已经尝试过这个解决方案但是得到错误 Undefined variable: result (View: E:\xampp\htdocs\laravel\lea\resources\views\admin\subjects\index .blade.php)
    • 用您传递给刀片的变量更改结果变量 :)
    • 我从你那里得到了答案和上面所有的例子,但问题是我在没有 json 解码之前得到了结果,为什么现在在这里:(
    • 我采用这种方法youtube.com/…
    猜你喜欢
    • 2018-01-01
    • 2017-11-05
    • 2017-12-27
    • 1970-01-01
    • 2018-12-03
    • 2018-08-27
    • 2015-09-22
    • 2017-03-20
    • 2014-03-25
    相关资源
    最近更新 更多