在Laravel Eloquent中,限制vs采取的区别是什么?

时间:2017-07-15 16:00:52

标签: php laravel eloquent

在文档中,它显示以下内容:

要限制查询返回的结果数,或跳过查询中给定数量的结果,您可以使用skip和take方法:

$users = DB::table('users')->skip(10)->take(5)->get();

或者,您可以使用限制和偏移方法:

$users = DB::table('users')
            ->offset(10)
            ->limit(5)
            ->get();

这两者有什么不同?执行速度有什么不同吗?

3 个答案:

答案 0 :(得分:13)

take()只是limit()的别名:

/**
 * Alias to set the "limit" value of the query.
 *
 * @param  int  $value
 * @return \Illuminate\Database\Query\Builder|static
 */
public function take($value)
{
    return $this->limit($value);
}

希望这有帮助!

答案 1 :(得分:7)

limit仅适用于精通的ORM或查询构建器对象,而take仅适用于集合以及ORM或查询构建器对象。

Model::get()->take(20);   // Correct
Model::get()->limit(20);  // Incorrect

Model::take(20)->get()    // Correct
Model::limit(20)->get()   // Correct

答案 2 :(得分:0)

限制适用于 eleqoent。主要与偏移量一起使用

例如

Model::offset(10)->limit(10)->get()

在上面的例子中,这意味着从第 10 个元素开始(偏移量)开始获取 10 个元素(限制)。

Take 主要用于集合,但也可以用作 eloquent 模型的 limit 的别名