Eloquent的Model::query()是什么意思?

30

能否详细解释一下 Eloquent 中 Model::query() 的含义?


4
它返回给定模型的查询构建器! - Maraboc
1个回答

75

每当您在Eloquent中查询一个模型时,都会使用Eloquent查询构建器。Eloquent模型使用魔术方法(__call、__callStatic)将调用传递给查询构建器。 Model::query() 返回此查询构建器的实例。

因此,由于where()和其他查询调用都是传递给查询构建器的:

Model::where()->get();

与以下内容相同:

Model::query()->where()->get();

过去我发现自己使用Model::query()的时候是需要实例化一个查询,然后根据请求变量构建条件。

$query = Model::query();
if ($request->color) {
    $query->where('color', $request->color);
}

2
谢谢@Devon。你能提供文档的参考吗? - Shateel Ahmed
你具体需要哪些文档? 是查询构建器的文档吗? 你可以查看API文档或模型类本身以了解其返回内容。 - Devon
我们可以在这个上面进行连接吗? - Shulz
1
@Shulz 我建议使用 Eloquent 内置的关联方法,而不是使用自己的 eloquent 模型进行连接。否则,您可以将查询构建器作为独立的工具使用,并编写一个返回松散类型对象的查询。 - Devon
为了获取响应,请使用 $query->get() - Mohamed Raza
1
为什么Laravel文档中没有query()方法的文档? - CuriousTeam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接