Laravel first()->count() return 不止一个

Laravel first()->count() return more than one

我将使用 count().

计算 eloquent 查询的总记录

我的table看起来像这样

id Code Discount
1 StarterResellerFree30Days 100
2 StarterResellerFree33Days 100
3 StarterResellerFree32Days 100
4 StarterResellerFree31Days 100
5 StarterResellerFree60Days 10

这是我的代码

 $eligible = Coupon::where('code', 'StarterResellerFree30Days')->first();
 echo $eligible->discount;
 echo "<br><br>";
 echo $eligible->count();

这是结果

100

5

如您所见,$eligible->discount return 预期值,意味着 $eligible 仅包含 1 条记录。

但是,当我使用 $eligible->count() 时,它是 returning 5,这是总记录。

$eligible->count() 应该 return 1 因为 first() 并且只有一个记录符合条件。

我哪里做错了?

谢谢

您使用 first() 方法是 returning MODEL 时犯了一个错误。您必须对 return 集合使用 get() 方法,以便您可以对检索到的集合执行 count()。当您对模型使用计数时,它将 return 数据库中的模型数量。

所以你想使用

$eligable = App\Models\Coupon::where('code', 'StarterResellerFree30Days')->get();

根据以下示例: