我有一些类似下面的代码,我想问的是使用完全相同的// dd($example->count()) #10
为何将dd()
放在每行不同的地方?我从未重新分配的$example
事件会发生什么变化?
$example = $car->wheels()->whereBetween(
'created_at',
[
$starDay->format('Y-m-d h:i:s'),
$today->format('Y-m-d h:i:s')
]
)
$total = $example->count();
// dd($example->count()) #10
$totalSuccess = $example->where('status', 'good')->count();
// dd($example->count()) # 5
$colors = $example->select('color', DB::raw('count(*) as total'))
->groupBy('color')
->get()
->toArray();
// dd($example->count()) # []
答案 0 :(得分:3)
值更改是因为每次您向查询中添加越来越多的不同子句(如where
)。这些调用实际上更改了查询对象本身,并且更改仍然存在。
$example
中只有whereBetween
子句的查询对象。它返回数据库中10行的计数。where('status', 'good')
添加到查询中,它将选择范围进一步缩小到5行。$example
和select(...)
调用更改了groupBy()
查询。在Laravel中,当您向其中添加查询构造时,查询生成器对象会被变异。因此,当您调用$example->where(...)
时,您的$example
查询构建器对象现在将具有该where
子句。