我有一个Laravel 5.4项目,我试图在连接表的列中进行求和,同时尽可能保持laravel的雄辩。
电影模型已连接到电影'数据库中充满电影和电影数据的表:
class Movie extends Model
{
public function votes()
{
return $this->hasMany(MovieVote::class, 'movie_id');
}
}
MovieVote与电影'电影有关。表与外键' movies_votes'并包含该电影的投票。向上投票为1,向下投票为-1。
class MovieVote extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $table = 'movie_votes';
protected $fillable = ['user_id', 'movie_id', 'vote';
public function movie()
{
return $this->belongsTo('App\Movie');
}
在这一点上,对我来说一切都非常简单,我可以在修补程序中进行雄辩的查询,例如
$movie = App\Movie::find(106)
$movie->votes
这显示了我的结果。我非常喜欢这种方便。
=> Illuminate\Database\Eloquent\Collection {#688
all: [
App\MovieVote {#687
id: 1,
user_id: 1,
movie_id: 106,
vote: 1,
created_at: "2017-04-23 03:32:29",
updated_at: "2017-04-23 03:32:30",
},
App\MovieVote {#104
id: 27,
user_id: 2,
movie_id: 106,
vote: -1,
created_at: "2017-04-23 04:12:51",
updated_at: "2017-04-23 04:12:52",
},
],
}
如何将所有电影投放到'投票'总和大于1,同时保持一切作为一个雄辩的集合,所以我可以在我的视图中使用诸如$ movie-> title之类的参数?
我已经尝试了一些"其他"诸如循环和计票之类的方式,将它们添加到数组等等,但我失去了所有的雄辩,所以我必须遗漏一些东西......
非常感谢任何帮助。
答案 0 :(得分:0)
前一段时间我使用Slim PHP Framework和Eloquent遇到了同样的问题。但解决方案大致相同。
您可以将范围与selectRaw一起使用。