Манипулирование данными внутри объекта - PullRequest
0 голосов
/ 19 ноября 2018

Привет, я новичок в Laravel и php.В моей базе данных у каждого учащегося есть три оценки по каждому предмету, и мне нужно найти их и отправить на просмотр среднюю оценку для каждого учащегося.Я попытался сделать это, как показано ниже, но возвращаемое значение - это объект (например, [5,4,3]), и он не позволяет мне посчитать среднее.Посоветуйте, пожалуйста, как я могу работать с данными внутри объекта.

$students = Student::all();

foreach ($students as $student) {
    $mathPoints = Point:: where('subject_id', 1)
        ->where('student_id', $student->id)
        ->pluck('points');
}

Я пытался превратить его в массив методом (array), но я не смог вычислить сумму значений с помощью array_sum после.

Обновление: модель my Point:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Point extends Model
{
    //Get the student the credit points are related to
    public function student()
    {
        return $this->belongsTo('App/Models/Student');
    }
    //Get the subject the credit points are related to
    public function subject()
    {
        return $this->belongsTo('App/Models/Subject');
    }
}

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

используйте Model::avg('columnName') для вычисления среднего.

читайте подробнее здесь: https://laravel.com/docs/5.4/queries#aggregates

$students = Student::all();
foreach ($students as $student){
   $mathPoints = Point::where(['subject_id'=>1,'student_id'=>$student->id])->avg('points');
   $student->avgPoint=$mathPoints;
}

внутри вашего клинка:

{{ $student->avgPoint}}
0 голосов
/ 19 ноября 2018
Point::where('student_id', $student->id)->get()

Когда вы используете all() с Eloquent, он делает запрос для вас.Если вы используете where(), вы должны «получить» его, используя get(), прежде чем использовать его как коллекцию.

$mathPoints = Point::where('student_id', $student->id)
    ->get()
    ->pluck('points');

Однако я, вероятно, рассмотрю использование более сложных запросов для полученияэти данные, как вы могли бы легко сделать сотни запросов на страницу, а не просто 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...