Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时在查询laravel 5中使用get()_Laravel_Eloquent - Fatal编程技术网

何时在查询laravel 5中使用get()

何时在查询laravel 5中使用get(),laravel,eloquent,Laravel,Eloquent,我在laravel资源的show方法中设置了一个基本查询 public function show($id){ $results = Student::find($id); $drives= Drive:: where('student_id', $id); } 对$results的查询非常有效。除非我在$drives的末尾执行->get(),否则$drives的查询将无法工作。为什么会这样?两个查询之间的区别是什么,一个需要->get()而另一个不需要?解决这个问题花了

我在laravel资源的show方法中设置了一个基本查询

public function show($id){
     $results = Student::find($id);

     $drives= Drive:: where('student_id', $id);
}

对$results的查询非常有效。除非我在$drives的末尾执行->get(),否则$drives的查询将无法工作。为什么会这样?两个查询之间的区别是什么,一个需要->get()而另一个不需要?解决这个问题花了我5个小时,我只是好奇它背后的功能,这样我就可以避免在未来头痛

使用get执行生成器查询。除非运行get(),否则将不会执行查询。get将返回一个集合

1-使用查询生成器以任何方式生成查询

$drives= Drive:: where('student_id', $id);
dd($drives); // will return a query builder, you can use it to build query by chaining
2-准备好执行查询调用get()时

如果要按id获取单个对象,请使用“查找”来获取单个对象

$results = Student::find($id);
dd($result); will return a single model

一些有口才的表达式隐含着一个
get
。那些由
查询生成器创建的查询将需要
->get()
调用,
find(),findOne()…
不需要
get()


在模型上使用函数
find()
,在本例中,将根据模型的主键
id
获取查询结果

使用
where()
时,它会获取一个集合(所有查询结果的对象),因此如果您只想要第一个结果,则必须调用
$drives=Drive::where('student_id',$id)->first()


这里有一个更深入的解释:

find()
返回给定主键(如果存在)的结果
get()
用于从查询生成器实例检索结果。查询生成器被认为是“where”或类似的东西?这正是Eloquent在添加子句(例如where)时的工作方式@maximus1127,然后使用查询生成器。然后,您需要某种方法来检索与您构建的查询相匹配的结果,
get()
方法就是用来获取结果的。还有一个问题。“get()”引用的“get”是否与$\u get变量中的“get”相同?还是更像是“得到这个结果”之类的?是否会出现“Model::where('foo',$id)->post()”的情况?它在哪里等价于$u POST变量?
$results = Student::find($id);
dd($result); will return a single model