我有一个名为 Post 的模型。在我的数据库中,我有“视图”和“喜欢”等字段。 我需要将自定义字段添加到我的 SELECT 请求中,例如执行“查看+喜欢”的“反应”。 使用属性是个坏主意,因为我需要在 WHERE 中使用“反应”和分页。
这是我需要工作的代码
$posts = Post::where('reactions', '>', 100)->paginate();
如何让自动添加的字段“反应”我的所有请求?
不能在 WHERE 子句中使用别名。
标准 SQL 不允许您在 WHERE 中引用列别名 条款。施加此限制是因为当 WHERE 代码为 执行后,列值可能尚未确定。
正如文档中所指出的,使用 HAVING 可以完成这项工作。请务必阅读这个问题:WHERE 与 HAVING。
您可以在 Laravel 查询构建器中使用,如下所示:
$posts = Post::select(['*', DB::raw('(views + likes) as reactions')])
->having('reactions', '>', 100)
->paginate();