【发布时间】:2016-05-10 11:12:40
【问题描述】:
我正在尝试通过 Laravel 5.2 中的迁移来创建数据库视图,因为我需要将相当复杂的查询交给视图。我有联赛、球队、球员和积分的模型/表格。每一个都与它之前的一个有一个 hasMany / belongsTo 关系。目标是创建一个表格,其中每一行是联赛名称、联赛所有剩余积分的总和以及 points.remnants 的计数,其中 points.remnants > 4 的值。
主要编辑:
到目前为止我所拥有的是
DB::statement( 'CREATE VIEW wones AS
SELECT
leagues.name as name,
sum(points.remnants) as trem,
count(case when points.remnants < 4 then 1 end) as crem
FROM leauges
JOIN teams ON (teams.league_id = leagues.id)
JOIN players ON (players.team_id = teams.id)
JOIN points ON (points.player_id = players.id);
' );
这不会引发任何错误,但它只返回一行,并且总和适用于所有联赛中的所有分数。
我正在寻找的是创建一个表格,其中每个联赛都有一行,其中包含联赛名称、该联赛的总剩余积分以及每个联赛剩余少于 4 的总积分。
标记为已解决。请参阅大多数此类问题的公认答案。单行问题是因为我没有将 GROUP BY 与 count() 一起使用。
【问题讨论】:
-
DB::statement() 将按原样执行您的查询,所以我猜这个问题与 laravel 无关。您是否尝试过直接在 cli 上执行此查询?
-
啊。那我可能想多了。如果我要在 sql 中执行它,计数和总和将在连接之前的选择中。当我在 laravel 中尝试时,它会引发错误
标签: laravel laravel-5.2 laravel-migrations laravel-query-builder