Функция Laravel Blade Sum не считая отрицательных чисел - PullRequest
0 голосов
/ 04 июля 2019

У моего веб-сайта есть отправленные материалы, и у этих отправлений есть голоса.

В таблице SubmissionVotes значения Upvotes хранятся в виде крошечного знака в столбце «голосование» как 1, а значения downvotes хранятся как -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, "voice": 1}, {"id":22, "user_id": 3, "submission_id": 1, "voice": 1}]

, но при просмотре базы данных я также вижу отрицательные голоса: enter image description here

1 Ответ

2 голосов
/ 04 июля 2019

Я думаю, что ваша проблема может быть здесь:

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

vote не является внешним ключом, просто он сработал для этих двух, потому что голосование - 1, а представление - 1 IУгадай.Но для отрицательного числа это не сработает.

Так что вместо vote, который не может быть внешним ключом, вы можете вместо этого изменить его на submission_id, так:

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

А в модели SubmissionVote у вас будет:

public function submission() {
    return $this->belongsTo('App\Submission');
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...