Имеет много и принадлежит в Laravel - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть Студент в таблице users, Родитель находится в той же таблице, и что Родитель является родителем этого Студент .

Студент имеет Расписание в таблице schedules.

Как я могу написать 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();

Как показано на рисунке ниже:

1 Ответ

0 голосов
/ 23 февраля 2019

Перед тем, как установить связь, давайте создадим родительскую область и найдем ученика более элегантным способом.

Модель пользователя

public function scopeByParent($query,$parentId){
    return $query->where("parent_id",$parentId);
}

Приведенная выше область позволяет нам получить пользователя или пользователей по родителю.Я бы.

Затем создайте отношения.

Модель пользователя

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...