Итак, у меня есть следующий код:
class PageSection extends Model {
protected $table = "PageSection";
const TYPE_CURATED = 0;
const TYPE_AUTOMATED = 1;
public function list() {
return $this->morphTo('list', 'entity_type', 'id_Entity');
}
}
тогда в AppServiceProvider.php у меня есть следующее:
use App\PageSection;
use App\PageSectionGroup;
use App\PageListEntry;
use App\RSSFeed;
use App\Shortcut;
use App\RSSEpisode;
use App\PageList;
use App\AutomatedList;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
Relation::morphMap([
'Section' => PageSection::class,
'SectionGroup' => PageSectionGroup::class,
PageSection::TYPE_CURATED => PageList::class,
PageSection::TYPE_AUTOMATED => AutomatedList::class,
PageListEntry::TYPE_FEED => RSSFeed::class,
PageListEntry::TYPE_SHORTCUT => Shortcut::class,
PageListEntry::TYPE_EPISODE => RSSEpisode::class
]);
}
Тогда у меня есть тестовый маршрут в моих маршрутах API, который проверяет, загружается ли список, и возвращает ноль: (Да, я проверил, что сам раздел существует)
Route::get('/test', function() {
$section = PageSection::with(['list', 'type'])->find(1);
// this returns null
return $section->list;
});
Моя схема базы данных для PageSection такова, что entity_type сообщает, что это за модель, а id_Entity - это внешний ключ для этой модели, который называется «id» в ссылочной таблице.
Другие отношения, определенные в morphMap, работают должным образом, но по какой-то причине отношение list () в PageSection - нет. Я не уверен, что я делаю не так здесь ... любая помощь будет оценена.