Laravel Blade Sum函数不计算负数

时间:2019-07-04 18:50:33

标签: php laravel

我的网站上有意见书,这些意见书有票。

上次投票以“ tinyint”形式存储在SubmissionVotes表中,列为“ 1”,下次投票以-1存储。

在我的Submission.php模型中,投票模型具有hasMany关系。

public function votes() {
    return $this->hasMany('App\SubmissionVote', 'vote');
}   

在刀片模板中,我计算出这些票的总和:

{{ $submission->votes->sum('vote') }}

现在,如果仅支持投票,则可以正常工作。三个投票将获得3分。

但是给定3个减数票和3个增数票,总和应返回0,但是,它返回3。

换句话说,它将-1计为0。

编辑:

奇怪的发展。当我查看$submission->votes返回的内容时,只会给我带正数的结果。

例如:

  

[{“ id”:13,“ user_id”:2,“ submission_id”:1,“ vote”:1},{“ id”:22,“ user_id”:3,“ submission_id”:1,“投票”:1}]

但是当我查看数据库时,我也可以看到反对票: enter image description here

1 个答案:

答案 0 :(得分:2)

我认为您的问题可能在这里:

public function votes() {
    return $this->hasMany('App\SubmissionVote', 'vote');
}   

vote不是外键,它恰好适用于这两个,因为我猜投票是1,提交是1。但是对于负数它将不起作用。

因此,您可能希望将其更改为vote,而不是不能为外键的submission_id

public function votes() {
    return $this->hasMany('App\SubmissionVote', 'submission_id');
}

在SubmissionVote模型中,您将拥有:

public function submission() {
    return $this->belongsTo('App\Submission');
}