我有一个学生表和 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_fee
或created_at
记录也与student_id相关的updated_at
记录。
也许是这样的:[[2500,'2019-05-19],[3500,'2019-06-28']]
所以我正在尝试获取所有已提交费用以及与Student_id相关的日期的列表。
答案 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
。