Laravel - 何时使用 - > get()

Bil*_*obs 17 laravel

我很困惑->get()在Laravel的时候......

EG DB::table('users')->find(1)不需要 - > get()来检索结果,也不需要User::find(1)

laravel文档说"...使用get或first方法执行查询......"

我已经阅读了Fluent Query Builder和Eloquent文档但是不明白何时需要使用get()...

谢谢您的帮助 在此输入图像描述

Nik*_*ess 17

由于该find()函数将始终使用表的主键,因此不需要get().因为你不能缩小你的选择范围,这就是为什么它总是只是试图获得该记录并将其返回.

但是当您使用Fluent Query Builder时,您可以嵌套条件:

$userQuery = DB::table('users');
$userQuery->where('email', '=', 'foo@bar.com');
$userQuery->or_where('email', '=', 'bar@foo.com');
Run Code Online (Sandbox Code Playgroud)

这允许您在整个代码中添加条件,直到您真正想要获取它们,然后您将调用该get()函数.

// Done with building the query
$users = $userQuery->get();
Run Code Online (Sandbox Code Playgroud)

  • 可以这样想:当您不完全知道查询将返回什么时,您需要使用“get()”。例如,您不能将其与“all()”一起使用,因为您**知道**它将返回所有记录并且不能应用其他条件。这与“find()”相同,因为您知道它只会尝试获取一条记录。 (3认同)

Han*_*Lim 13

  • 对于find(n),您将根据主键 "n" 检索行.
  • 对于first(),您检索适合where子句的所有行中的第一行.
  • 对于get(),您检索适合where子句的所有行.(请注意,访问所有行需要循环,否则会出现一些错误).