问题描述
我对雄辩的morphToMany有疑问
public function categories()
{
return $this->morphToMany(Category::class,'categoryable')->withTimestamps();
}
# part of query
return $this->builder->whereHas('categories',function ($query) use ($val) {
$query->whereIn('categories.id',$val);
});
这部分查询生成MySQL代码(此处不需要删除部分代码):
select
*
from
`categories`
INNER join `categoryables` on `categories`.`id` = `categoryables`.`category_id`
where
`categoryables`.`categoryable_type` = 'App\Models\Volunteering'
在DBeaver中进行了测试,此代码返回空结果,当我查看数据库表时应为任何结果。注释掉WHERE子句并显示记录。因此,我复制并粘贴“ App \ Models \ Volunteering”进行查询,不,这是正确的。尝试将LIKE与%一起使用,如果没有,则没有记录。 但是当我测试
WHERE `categoryables`.`categoryable_type` LIKE 'App%'
查询显示结果。但是此查询是由Eloquent生成的。怎么了?
在MySQL 5.7和MariaDB 10.2上测试,存在相同的问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)