Я работаю над трехмерной сводной таблицей
Архитектура
Я сделал следующие таблицы и модели.
register_colleges( model: RegisterCollege )
- college_id
- random field
programs ( model: Program )
- id
- program_name
courses ( model: Course )
- id
- course_name
course_program_register_college
- course_id
- program_id
- college_id
Теперь проблема, с которой я столкнулся, заключается в том, что мое представление показывает результат null, когда я пытаюсь получить доступ к program_name (скажем). Я ожидаю этого, потому что, когда я конвертирую его в SQL (), он показывает следующий запрос:
select * from 'programs' inner join 'course_program_register_college' on 'programs'.'id' = 'course_program_register_college'.'program_id' where 'course_program_register_college'.'college_id' is null
Я не могу понять, почему этот запрос пытается получить данные where 'course_program_register_college'.'college_id' is null.
RegisterCollege.php (модель)
// pivot table is looking for register_college_id as a primary key field
protected $primarykey = 'college_id';
public function programs(){
return $this->belongsToMany('App\Program',
'course_program_register_college', 'college_id');
}
Обновлено:-
Красноречивый запрос
{{ $college->programs()->toSql() }} // in some view.blade.php
Я обновил вопрос
а как ты получил $college var? это несуществующий экземпляр модели?
Я передал его на свой view.blade.php через route. Он содержит информацию о конкретном колледже.
Я нашел решение проблемы, изменив функцию модели как таковую - return $this->belongsToMany('App\Program', 'course_program_register_college', 'college_id', 'program_id')->distinct('program_id');, хотя я до сих пор не знаю, почему в первом случае она давала нулевой результат.






Пожалуйста, предоставьте код, в котором вы задаете свой красноречивый запрос