我对何时->get()
在 Laravel 感到困惑......
EGDB::table('users')->find(1)
不需要 ->get() 来检索结果,也不需要User::find(1)
laravel 文档说“......使用 get 或 first 方法执行查询......”
我已阅读 Fluent Query Builder 和 Eloquent 文档,但不明白何时需要使用 get()...
谢谢您的帮助
我对何时->get()
在 Laravel 感到困惑......
EGDB::table('users')->find(1)
不需要 ->get() 来检索结果,也不需要User::find(1)
laravel 文档说“......使用 get 或 first 方法执行查询......”
我已阅读 Fluent Query Builder 和 Eloquent 文档,但不明白何时需要使用 get()...
谢谢您的帮助
由于该find()
函数将始终使用表的主键,因此不需要 for get()
。因为您无法缩小选择范围,这就是为什么它总是会尝试获取该记录并返回它。
但是当您使用 Fluent Query Builder 时,您可以嵌套如下条件:
$userQuery = DB::table('users');
$userQuery->where('email', '=', 'foo@bar.com');
$userQuery->or_where('email', '=', 'bar@foo.com');
这允许您在整个代码中添加条件,直到您真正想要获取它们,然后您将调用该get()
函数。
// Done with building the query
$users = $userQuery->get();
find(n)
,您根据主键“n”检索一行。first()
,您检索适合 where 子句的所有行中的第一行。get()
,您检索所有符合 where 子句的行。(请注意,访问所有行需要循环,否则会出现一些错误)。find
从数据库中返回一行并将其表示为 fluent / eloquent 对象。例如SELECT * FROM users WHERE id = 3
相当于DB::table('users')->find(3);
get
返回一个对象数组。egSELECT * FROM users WHERE created_at > '2014-10-12'
相当于DB::table('users')->where('created_at', '>', '2014-10-12')->get()
将返回一个包含用户的对象数组,其中 created at 字段比 4014-10-12 更新。
该get()
方法将为您提供数据库中满足您的参数的所有值,其中first()
您只是获得第一个结果。在搜索密钥时使用find()
和。findOrFail()
这就是我使用它们的方式:
当我想要一个表中的所有数据时,我使用 all() 方法
Model::all();
当我想通过主键查找时:
Model::find(1)->first();
或者
Model::findOrFail(1)->first();
如果存在主键为 1 的行,这将起作用。它应该只检索一行,所以我使用first()
而不是get()
. 请记住,如果您删除了使用键 1 的行,或者表中没有数据,您find(1)
将失败。
当我在 where 子句中查找特定数据时:
Model::where('field', '=', 'value')->get();
当我只想要 where 子句中数据的第一个值时。
Model::where('field', '=', 'value')->first();
您可以使用 get() 方法和 latest() 方法来获取最近添加到表中的最新记录 例如
$user=Student::latest()->get();
按降序返回所有数据
基本上您需要了解的是 get() 返回一个集合(请注意,一个对象可以在集合中,但它仍然是一个集合)为什么 first() 从查询结果中返回第一个对象(即它返回一个object) #Take_away Get() 返回一个集合 first() 返回一个对象