【问题标题】:Laravel - Property [name] does not exist on this collection instanceLaravel - 此集合实例上不存在属性 [名称]
【发布时间】:2017-08-15 03:16:11
【问题描述】:

我正在尝试创建一个集合并将其传递给刀片。我的 PHP 代码是这样的

$collection1 = collect(['name' => 'Alex', 'id' => '1']);
$collection2 = collect(['name' => 'John', 'id' => '2']);
$collection3 = collect(['name' => 'Andy', 'id' => '3']);

$people_col = new Collection();

$people_col->push($collection1);
$people_col->push($collection2);
$people_col->push($collection3);

return view('test',[
    'people_col' => $people_col
]);

在我的刀片中,我循环通过 people_col 来获取项目的属性:

 @foreach ($people_col as $people)
        <tr> 
            <td>{{ $people->name }}</td>
            <td>{{ $people->id }}</td>               
        </tr>
 @endforeach

但是我得到了这个错误:

此集合实例上不存在属性 [名称]

有什么想法吗? 谢谢

【问题讨论】:

  • 呃,先试试dd($people_col),看看效果如何。

标签: laravel-5


【解决方案1】:

您正在创建一个集合的集合,而您应该创建一个对象的集合。

使用您当前的实现,您应该能够使用数组访问方法{{ $people['name'] }} 或在集合{{ $people-&gt;get('name') }} 上使用get 方法获取值

如果您创建了一个像下面这样的对象集合并返回它而不是您现在正在做的事情

$people_col = collect([
    (object) ['name' => 'Alex', 'id' => '1'],
    (object) ['name' => 'John', 'id' => '2'],
    (object) ['name' => 'Andy', 'id' => '3']
]);

return view('test', [
    'people_col' => $people_col
]);

那么在您看来,您应该能够像在代码中那样访问人员对象。

@foreach ($people_col as $people)
    <tr> 
        <td>{{ $people->name }}</td>
        <td>{{ $people->id }}</td>               
    </tr>
@endforeach

【讨论】:

    【解决方案2】:

    尝试这样访问属性名:$people['name']

    @foreach ($people_col as $people)
            <tr> 
                <td>{{ $people['name'] }}</td>
                <td>{{ $people['id'] }}</td>               
            </tr>
     @endforeach
    

    【讨论】:

      猜你喜欢
      • 2019-11-10
      • 2021-07-02
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 2019-07-10
      相关资源
      最近更新 更多