Laravel 模型中自定义查询字段

问题描述 投票:0回答:1

我有一个名为 Post 的模型。在我的数据库中,我有“视图”和“喜欢”等字段。 我需要将自定义字段添加到我的 SELECT 请求中,例如执行“查看+喜欢”的“反应”。 使用属性是个坏主意,因为我需要在 WHERE 中使用“反应”和分页。

这是我需要工作的代码

$posts = Post::where('reactions', '>', 100)->paginate();

如何让自动添加的字段“反应”我的所有请求?

php laravel eloquent
1个回答
0
投票

不能在 WHERE 子句中使用别名。

标准 SQL 不允许您在 WHERE 中引用列别名 条款。施加此限制是因为当 WHERE 代码为 执行后,列值可能尚未确定。

复制自MySQL文档这个问题

正如文档中所指出的,使用 HAVING 可以完成这项工作。请务必阅读这个问题:WHERE 与 HAVING

您可以在 Laravel 查询构建器中使用,如下所示:

$posts = Post::select(['*', DB::raw('(views + likes) as reactions')])
    ->having('reactions', '>', 100)
    ->paginate();
© www.soinside.com 2019 - 2024. All rights reserved.