【问题标题】:TypeError - count(): Argument #1 ($var) must be of type Countable|array, null givenTypeError - count(): 参数 #1 ($var) 必须是 Countable|array 类型,给定 null
【发布时间】:2021-09-27 13:18:13
【问题描述】:

我从 laravel 开始,我正在尝试制作仪表板,但是当我将此代码添加到 dashboard.blade.php 时(我删除了之前的代码,因为它使用了 Jetstream) 给出错误的行:

 @if (count($events) > 0)

代码主体:

 @extends('layouts.main')


 @section('title', 'Dashboard')


 @section('content')



 <div class="col-md-10 offset-md-1 dashboard-title-container">

     <h1>My Events</h1>

 </div>

 <div class="col-md-10 offset-md-1 dashboard-events-container"> /* This is where you will have the list of events*/
     @if (count($events) > 0)
     @else
     <p>You have no events yet, <a href="/events/create">create event</a></p>
     @endif
 </div>

 @endsection

我的 php 是 8.0.7

【问题讨论】:

  • 显示加载数据的控制器代码
  • 您似乎正在尝试在 null 变量上使用 count()。你需要展示你的控制器以便更好地理解你的代码。

标签: laravel laravel-blade


【解决方案1】:

您的 User 模型上似乎缺少 events 关系。

如果你定义了一对多的关系,你在访问模型的属性(动态属性)时总是会得到一个集合。

// User model

public function events()
{
    return $this->hasMany(Event::class);
}

这样您就可以将关系作为属性访问并将集合传递给您的视图:

return view('events.dashboard', ['events' => auth()->user()->events]);

Laravel 8.x Docs - Eloquent Relationships - One To Many - hasMany

Laravel 8.x Docs - Eloquent Relationships - Relationship Methods Vs. Dynamic Properties

【讨论】:

  • 非常感谢,这解决了我的问题。
  • @TatianaScheideggerdeAguiar 没问题,如果它解决了您的问题,请接受答案,如果您觉得有帮助,请点赞,谢谢
猜你喜欢
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2017-09-20
  • 1970-01-01
相关资源
最近更新 更多