雄辩的morphToMany查询-生成的SQL代码问题

问题描述

我对雄辩的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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...