【问题标题】:ErrorException in 939c885abda79cfdae4288b828415df7 line 38: Trying to get property of non-object939c885abda79cfdae4288b828415df7 第 38 行中的 ErrorException:尝试获取非对象的属性
【发布时间】:2015-11-17 21:17:46
【问题描述】:

我不断收到此错误:

ErrorException in 939c885abda79cfdae4288b828415df7 line 38: 
Trying to get property of non-object

我的控制器如下所示:

$episodes = Episode::orderBy('id', 'desc')->paginate(5);

$channels = Channel::lists('channel_name', 'id')->all();

return view('app.admin.episodes', compact('episodes', 'channels'));

还有观点:

{!! Form::Label('Select Channel') !!}
<select>
@foreach($channels as $channel)
<option value="{{$channel->channel_name}}">{{$channel->id}}</option>
@endforeach
</select>

我不知道为什么会这样。我的问题是,是否不可能像我在 Laravel 的代码 sn-p 中那样将数据从多个表传递到视图?我想相信在 Laravel 5.1 中必须有一种方法可以解决这个问题,但是怎么做????检查文档,看到许多博客文章都让我无处可去。谁能救我这个痛苦.....谢谢

【问题讨论】:

    标签: php laravel views models


    【解决方案1】:

    要访问数组中的元素,请使用数组表示法:$channel['channelname']$channel['id'] 通过这样做:$channel-&gt;channel_name,您正在尝试访问对象属性。

    【讨论】:

    • 这不是从lists 方法访问结果的正确方法。没有每个集合项的详细信息,既不是对象也不是子数组。
    【解决方案2】:

    从 Laravel 5.1 开始,lists 方法现在返回一个集合而不是数组。调用all() 将其转换为数组。来源:http://laravel.com/docs/5.1/upgrade

    虽然您正在使用表单生成器,但您可以简单地使用select 方法并让它为您处理。然后,您可以将代码简化为:

    {!! Form::label('Select Channel') !!}
    {!! Form::select('channel', $channels) !!}
    

    将“频道”更改为您使用的任何输入名称。

    【讨论】:

    • 这不是从lists 方法访问结果的正确方法。没有每个集合项的详细信息,既不是对象也不是子数组。
    • 哇感谢@Thomas:lists 方法现在返回一个集合而不是一个数组。调用 all() 将其转换为数组。这对我帮助很大,也感谢您提供的链接。
    【解决方案3】:

    lists 方法返回一个关联数组,其中值来自作为第一个参数 (channel_name) 传递的列和作为第二个参数 (id) 传递的列的项键。因此,在您的情况下,您将获得一个具有以下项目结构的数组:

    ['id' => 'channel_name']
    

    也就是说用@foreach进行迭代时,需要使用数组的key作为id,value作为通道名。此外,您已经切换了显示的值和文本,因此值应该是 ID 而不是名称,除非您想要一个让您选择 ID 的下拉菜单:

    <select>
        @foreach($channels as $id => $name)
            <option value="{{ $id }}">{{ $name }}</option>
        @endforeach
    </select>
    

    您可以在Queries: Retrieving Results Laravel 文档的“检索列值列表”小节中阅读有关lists 方法工作原理的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 2017-08-02
      • 2018-04-14
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多