在laravel中hasMany和belongsTo

时间:2019-02-23 08:06:53

标签: laravel laravel-5

我在users表中有一个 Student Parent 在同一表中,并且 Parent 是父级学生的那个。

学生schedules表中具有 Schedule

我如何编写hasManybelongsTo以获得正确的关系,如下面的自定义查询一样,效果很好:

$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();

如下图所示:

1 个答案:

答案 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();