我有一个叫波斯特的模特.在我的数据库中,我有像"查看"和"喜欢"这样的字段. 我需要向我的SELECT请求添加一个定制字段,如执行"查看+点赞"的"react ". 使用属性不是一个好主意,因为我需要在带有分页的WHERE中使用"react ".
以下是我工作所需的代码
$posts = Post::where('reactions', '>', 100)->paginate();
我如何让自动添加的字段对我的所有请求做出"react "?
我有一个叫波斯特的模特.在我的数据库中,我有像"查看"和"喜欢"这样的字段. 我需要向我的SELECT请求添加一个定制字段,如执行"查看+点赞"的"react ". 使用属性不是一个好主意,因为我需要在带有分页的WHERE中使用"react ".
以下是我工作所需的代码
$posts = Post::where('reactions', '>', 100)->paginate();
我如何让自动添加的字段对我的所有请求做出"react "?
不能在WHERE子句中使用别名.
标准SQL不允许在WHERE中引用列别名 第.条.施加此限制是因为当WHERE代码为 执行时,可能尚未确定列值.
从MySQL documentation和这个question复制
正如文档中所指出的,使用HAVING可能会起到作用.一定要读一读这个问题:WHERE vs HAVING.
您可以在Laravel查询构建器中使用如下所示:
$posts = Post::select(['*', DB::raw('(views + likes) as reactions')])
->having('reactions', '>', 100)
->paginate();