Создал БД
posts
id - integer
title - string
body - text
videos
id - integer
title - string
url - string
comments
id - integer
body - text
commentable_id - integer
commentable_type - string
Для каждой Модели определил отношения
class Comment extends Model
{
/**
* Get all of the owning commentable models.
*/
public function commentable()
{
return $this->morphTo();
}
}
class Post extends Model
{
/**
* Get all of the post's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
class Video extends Model
{
/**
* Get all of the video's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
В контроллере написано
public function index()
{
$comment = App\Comment::find(1);
$commentable = $comment->commentable;
dd( $commentable);
}
Но мне выдает ошибку
FatalErrorException in Model.php line 827: Class 'post' not found
В базе пробовал менять название commentable_type на Post все равно ошибка.
Что мне сделать чтобы отношения работали?
Ниже того примера в документации, который вы пытаетесь воспроизвести, написано, что Laravel хранит полное название класса (с пространством имён: App\Post
)
Чтобы указать свои, сделайте так:
Relation::morphMap([
'post' => 'App\Post',
'video' => 'App\Video',
// 'как-храним' => 'класс',
]);
Сделать это можно в App\Providers\AppServiceProvider::boot()
, например.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
не могу запустить сайт на локалкеизобрадения видит, а php-файлы не хочет обрабатывать
Передаю через call() файл, как передать заголовки?
Привет! Необходимо написать программу для разбора пакетов данных протокола, которые шлёт терминал ГЛОНАСС
Получаю список "Категорий" из таблицы бд MySqlИ задача заполнить Select полученным списком