Laravel 6.2 гдеHasMorph не возвращает ожидаемое значение - PullRequest
0 голосов
/ 11 марта 2020

Нужна помощь для laravel polymorphi c. Я пытаюсь отфильтровать из основной таблицы, которая является Комментарий, чтобы получить его таблицы морфинга и поиск по ключевому слову FOO. Я пробовал с whereHas, но получаю сообщение об ошибке, в котором указано где whereHasMorph, поэтому я попытался изменить whereHas на whereHasMorph. Но каждый раз, когда я фильтрую, результат будет пустой коллекцией, даже если значение существует в таблице. Поэтому я просмотрел документацию laravel и нашел приведенный ниже пример. Я попробовал образец, но я все еще получаю пустую коллекцию. Я пробовал читать, но не смог найти исправления.

Ниже приведен пример кода, который я пробовал

** Модели **

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    protected $table = 'comments';

    protected $fillable = [
        'body',
        'commentable_id',
        'commentable_type'
    ];

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

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $table = 'posts';

    protected $fillable = [
        'title',
        'body'
    ];

    public function comments()
    {
        return $this->morphMany('App\Comment', 'commentable');
    }
}
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Video extends Model
{
    protected $table = 'videos';

    protected $fillable = [
        'title',
        'url'
    ];

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

** Контроллер **

public function commentList () {

    $comments = App\Comment::whereHasMorph(
        'commentable',
        ['App\Post', 'App\Video'],
        function ($query) {
            $query->where('title', 'like', '%foo%');
        }
    )->get();

    dd($comments);
}

Есть ли что-то, что я пропускаю или мне нужно что-то настроить или установить некоторые пакеты?

"php": "^7.2",
"laravel/framework": "^6.2",

Изображения таблицы БД

enter image description here

enter image description here

enter image description here

1 Ответ

0 голосов
/ 12 марта 2020

Я пытался и не знаю, почему вдруг работает, когда я удаляю первый \ в БД.

Изменено \ App \ Post в таблице на App \ Post, а также в коде, после чего оно уже работает. Спасибо за помощь.

...