Laravel 5.8: отношение MorphMany возвращает пустое значение


Laravel 5.8: отношение MorphMany возвращает пустое значение

04.09.2019 07:59:31 Просмотров 44 Источник

Модель Комментария:

public function commentable()
{
    return $this->morphTo();
}

public function comments()
{
    return $this->hasMany(Comment::class , 'parent_id' , 'id');
}

public function setCommentAttribute($value)
{
    $this->attributes['comment'] = str_replace(PHP_EOL , "<br>" , $value);
}

Модель Столба:

public function comments()
{
    return $this->morphMany(Comment::class, 'commentable');
}

И Контроллер:

public function show_comments(Post $post)
{
    $comments = $post->comments()
                ->where('approved' , 1)
                ->where('parent_id', 0)
                ->latest()
                ->with(['comments' => function($query) {
                    $query->where('approved' , 1)->latest();
                }])->get();

    dd($comments);
    return view('post',compact('comments'));
}

Комментарии к таблице базы данных:

Schema::create('comments', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->integer('parent_id')->unsigned()->default(0);
            $table->boolean('approved')->default(0);
            $table->text('comment');
            $table->integer('commentable_id')->unsigned();
            $table->string('commentable_type');
            $table->timestamps();
        });

$dd($comments) возвращает #items: [] или пусто. Есть записи базы данных, и я могу получить к ним доступ с помощью других методов.

Я много искал, прежде чем спросить, но безуспешно.

У вопроса есть решение - Посмотреть?

Ответы - Laravel 5.8: отношение MorphMany возвращает пустое значение / Laravel 5.8: MorphMany relation returns Empty

Sergio Opale

06.10.2020 05:22:10

Я пытался решить ту же проблему в течение нескольких часов. Для тех, кто ищет ответ :

Проверьте, содержит ли поле commentable_type в таблице comments правильно отформатированную строку

'commentable_type' => 'App/Models/Comment',       // Does not work

'commentable_type' => 'App\Models\Comment',      // Works 				  

				
Помочь в развитии проекта:
Закрыть X