我在users
表中有一个 Student , Parent 在同一表中,并且 Parent 是父级学生的那个。
学生在schedules
表中具有 Schedule 。
我如何编写hasMany
和belongsTo
以获得正确的关系,如下面的自定义查询一样,效果很好:
$schedules = DB::table('users')
->join('schedules', 'users.id', '=', 'schedules.studentID')
->select('users.*', 'schedules.*', 'users.fname as fname', 'users.lname as lname')
->where('users.parent_id',$request->id)
->where('schedules.status','1')
->where('schedules.status_dead','0')
->whereIn('schedules.std_status',[1, 2])
->get();
如下图所示:
答案 0 :(得分:1)
在建立关系之前,先创建父级范围并找到学生更优雅的方式
用户模型
public function scopeByParent($query,$parentId){
return $query->where("parent_id",$parentId);
}
以上范围为我们提供了按父ID获取一个或多个用户的方法。
然后创建关系。
用户模型
public function schedules(){
return $this->hasMany("App\Schedule","studentID","id");
}
计划模型
public function users(){
return $this->belongsTo("App\User","id","studentID");
}
然后使用上述范围和关系创建查询。
User::with(["schedules" => function ($query) {
$query->whereStatusAndStatusDead(1, 0)
->whereIn('std_status', [1, 2]);
}])
->byParent($request->id)
->get();