Передача данных между 2 моделями в 1 контроллер функции Laravel - PullRequest
0 голосов
/ 28 марта 2019

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

Контроллер

public function getLecture($id)
{   
    $lectureID = student::select('lecture_id_FK')->where('student_id',$id)->first();

    $lectureDATA = lecture::where('lecture_id',$lectureID)->first();

    return $lectureDATA;
}

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

, прежде чем проверять, что внутри $ lectureID:

public function getLecture($id)
{   
    $lectureID = student::select('lecture_id_FK')->where('student_id',$id)->first();
    dd($lectureID);//I believe inside will be object with lecture_id_FK
    //then just
    $lectureDATA = lecture::where('lecture_id',$lectureID->lecture_id_FK)->first();
    return $lectureDATA;
}

Рекомендуемый способ сделать это:

В классе ученика (рекомендуем использовать заглавную S)

class student 
{
     public function lecture(){
         return $this->hasOne('App\lecture','lecture_id_FK','lecture_id');
     }
}

тогда просто загрузите студента с лекцией вот так

$student = studend::with('lecture')->find($id);
$lecture = $student->lecture;
0 голосов
/ 28 марта 2019
you can try two ways 
public function getLecture($id)
{   
    ## way 1
    $lectureID = student::where('student_id',$id)->value('lecture_id_FK');
    $lectureDATA = lecture::where('lecture_id',$lectureID)->first();

    ## way 2
    $lectureID = student::where('student_id',$id)->first();
    $lectureDATA = lecture::where('lecture_id',$lectureID->lecture_id_FK)->first();
    return $lectureDATA;
}
...