You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 6获取非对象属性'id'报错,数据无法在datatable和calendar5展示

问题解决:Trying to get property 'id' of non-object

错误根源

你在控制器里生成的$events是关联数组,但Blade模板里误将其当作Eloquent对象,使用了->的属性访问语法,这直接导致了报错。另外模板里用到的部分字段,和控制器数组定义的键名不匹配,还有一些字段根本没在数组里定义。

修复方案

  1. 改用数组索引访问:把模板里所有$event->xxx的写法改成$event['xxx'],确保键名和控制器里定义的完全一致。
  2. 对齐字段键名:控制器里把booking->name存成了titre,booking->datee存成了start,模板里要对应调整为$event['titre']和$event['start']。
  3. 补充缺失字段:模板里用到的user->name和status,控制器数组里没包含这些数据,需要在循环时补充进去。

修正后的代码

EventController.php(补充缺失字段)

$events = array();
// 预加载user关联,避免N+1查询问题
$bookings = Event::with('user')->get();

foreach($bookings as $booking) {
    $color = null;
    $events[] = [
        'id'      => $booking->id,
        'titre'   => $booking->name,
        'start'   => $booking->datee,
        'comment' => $booking->comment,
        'color'   => $color,
        'user'    => $booking->user,
        'status'  => $booking->status
    ];
}

$users  = User::all();
return view('index')->with([
    'events' => $events,
    'users'  => $users,
]);

index.blade.php(改用数组访问语法)

<tbody>
    @foreach($events as $event)
    <tr id="{{$event['id']}}">
        <td><input type="checkbox" class="checkbox" name="customer_id[]" value="{{$event['id']}}" /></td>
        <td>{{ $event['id'] }}</td>
        <td>{{ $event['start'] }}</td>
        <td>{{ $event['titre'] }}</td>
        <td>
            {{ $event['comment'] }}
            <a href="#" target='_blank' class=""> <i class="fas fa-eye"></i></a>
        </td>
        <th scope="col">{{ Str::upper($event['user']['name']) }}</th>
        <td>
            <span class="badge badge-warning">{{ $event['status'] }}</span>
        </td>
    </tr>
    @endforeach
</tbody>

内容的提问来源于stack exchange,提问作者Hajar Lamine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:45:36