Нужна помощь для 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",
Изображения таблицы БД