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();
根据以下示例:
我将使用 count()
.
我的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();
根据以下示例: