使用student_id作为外键从费用表中获取已提交费用的列表以及日期

时间:2019-05-21 07:38:06

标签: laravel laravel-5 eloquent eloquent--relationship

我有一个学生表和 fees 表。

学生

--------------
|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_feecreated_at记录也与student_id相关的updated_at记录。

也许是这样的:[[2500,'2019-05-19],[3500,'2019-06-28']]

所以我正在尝试获取所有已提交费用以及与Student_id相关的日期的列表。

2 个答案:

答案 0 :(得分:0)

获得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;
}

答案 1 :(得分:0)

在我看来,您创建了文件Fee.php,并且您的类模型为StudentFees。似乎不匹配。我认为您应该将文件重命名为StudentFees.php