Получить список отправленных сборов вместе с датой из таблицы сборов, используя student_id в качестве внешнего ключа - PullRequest
1 голос
/ 21 мая 2019

У меня есть студенты стол и сборы стол.

студентов

--------------
|id | name |
--------------

плата

---------------------------------------------------------
| id| student_id | paid_fees | created_at | updated_at | 
---------------------------------------------------------

Здесь student_id от сборов составляет foreign key, что означает id на students.

У меня есть две модели для этих таблиц, и я определил hasMany отношение между ними. Потому что, Студент может представить общую плату по частям, поэтому он может иметь более одной записи в fees таблице

Student.php

lass Student extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name', 'roll_no', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];


    public function fees(){
        return $this->hasMany('App\StudentFees');
    }

}

Fee.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Fees extends Model
{
    public function student(){
        return $this->belongsTo('App\Student');
    }
}

Я пытался собрать все записи, связанные с srudent_id.
$student->fees->where('student_id', $student - >id)
Это дает мне массивы записей как объект. Пожалуйста, предложите, если есть лучший способ.

Я пытаюсь получить paid_fee запись, связанную с student_id с created_at или updated_at записью тоже.

Может быть так: [[2500, '2019-05-19], [3500,' 2019-06-28 ']]

Итак Я пытаюсь получить список всех отправленных взносов вместе с датой, связанной с student_id.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

По-моему, вы создали свой файл Fee.php, а модель вашего класса - StudentFees. кажется, что он не совпадает. Я думаю, вы должны переименовать этот файл в StudentFees.php.

0 голосов
/ 21 мая 2019

Как только вы получите объект StudentFees, вы можете получить доступ к Student с помощью $studentFee->student.

Но если вам нужен абсолютно такой вывод, вы можете написать что-то вроде

$studentFees = StudentFees::all();
if ($studentFees) {
    $output = $studentFees->map(function($fee) {
        return [ $fee->paid_fees, $fee->student->created_at ];
    });   
    // do whatever you want with $output;
}
...