Laravel Eloquent-为什么take(n)有效,而limit(n)无效?

时间:2018-11-20 11:29:59

标签: php laravel eloquent

根据laravel文档,take()只是limit()的别名。

为什么不查询4就不行,而其他查询就很好。

1. $employee->take(2)->get();   // Works
2. $employee->limit(2)->get(); // Works
3. $employee->get()->take(2); // Works
4. $employee->get()->limit(2) // Gives Error; Method Illuminate/Database/Eloquent/Collection::limit does not exist.

1 个答案:

答案 0 :(得分:5)

调用get时,数据库查询已执行,因此结果为Illuminate\Support\Collection,而在limit上调用Collection时会引发错误,因为{ {1}}类没有Collection函数。

limitlimit都在数据库查询中执行,因为它们同时也是takeIlluminate\Database\Query\Builder的功能,而不是Illuminate\Database\Eloquent\Builder上的。 / p>

注意:第三条语句之所以起作用,是因为Collection也具有Illuminate\Support\Collection函数。