pat*_*cus 68
User::all()和User::get()会做同样的事情.
all()是一个静态的方法Eloquent\Model.它所做的就是创建一个新的查询对象并对其进行调用get().使用时all(),您根本无法修改执行的查询(除非您可以通过将它们作为参数传递来选择要选择的列).
get()是Eloquent\Builder对象的方法.如果需要修改查询,例如添加where子句,则必须使用get().例如,User::where('name', 'David')->get();.
get() 用于添加查询,all() 用于获取所有数据,不使用任何条件。
all() 的示例:
$query = Project::all();
Run Code Online (Sandbox Code Playgroud)
get() 的示例:
$query = Project::select('id', 'name')->where('name', '')->orderBy('id', 'desc')->get();
Run Code Online (Sandbox Code Playgroud)
为了进一步阐明其工作原理,这是因为Model类中有一个魔术方法,该方法将进行任何未定义的静态调用,创建一个实例,然后为您在该实例上调用该方法。
您可以在以下源代码中看到它:https : //github.com/laravel/framework/blob/5.6/src/Illuminate/Database/Eloquent/Model.php (第1580行)
这在Laracast情节中也得到了解释:https://laracasts.com/series/advanced-eloquent/episodes/3 (需要订阅)
当我第一次遇到这个问题时,我也很迷惑,找不到get()静态方法。但是后来我想起了《拉拉卡斯特》(Laracast)插曲,它帮助我联系了各个环节。
| 归档时间: |
|
| 查看次数: |
16402 次 |
| 最近记录: |