2017-02-22 10 views
0

Из-за изменения имени модели мой класс Student не работает должным образом. С базой данных называется assos:Laravel 5 принадлежитTo (classname :: class) не работает

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`name` text COLLATE utf8mb4_unicode_ci NOT NULL, 
`student_id` text COLLATE utf8mb4_unicode_ci NOT NULL, 
`created_at` timestamp NULL DEFAULT NULL, 
`updated_at` timestamp NULL DEFAULT NULL, 

связана с моделью Asso,

Запрос App\Asso::first()->belongsTo(Student::class) возвращает null

Когда запрос App\Asso::first()->belongsTo('App\Student','student_id') возвращает соответствующий студент.

Не понимаю, почему belongsTo(Student::class) не работает должным образом. Можете ли вы помочь мне разобраться?

Большое спасибо

ответ

1

От Eloquent: Relationships One To One:

Eloquent определяет внешний ключ имя по умолчанию, исследуя имя метода отношений и суффикса имя метода с _id.

Поскольку вы, кажется, определяя отношения инлайн, имя метода, вероятно, не student так что не ищет student_id, он ищет mehtodname_id.

В вашем втором примере вы рассказываете, в каком поле искать отношение, поэтому он смотрит на правильный.

Не связанный с вопросом конкретно, но вы действительно злоупотребляете отношениями. Они должны быть определены в модели.

+0

Не беспокойтесь о том, как использовать отношения. Это было только для иллюстрации этого сообщения :) Большое спасибо! –

Смежные вопросы