首页 > 解决方案 > 可变形字段不适用于 Laravel DB::Select() 语句

问题描述

我需要对我正在处理的不返回任何结果的复杂查询使用 DB::select() 语句。经过一番挖掘,我发现原因是无论我使用这个 sintaxis,model_type字段比较都不起作用:

select *
from questions
where model_type = "App\Models\Product"

或者这个sintaxis:

select * 
from questions
where model_type = "App\\Models\\Product"

尽管第二句在 MySQL Workbench 上运行良好,但它在 Laravel 中没有返回任何结果。MySQL 表字段名称当然是model_type并且值保持为:App\Models\Product并且所有关系都可以正常工作。似乎应该有一种方法可以指定 Laravel 如何比较这些值,但我还没有找到。请注意,我必须使用 DB::select() 而不是 Eloquent,因为我的实际查询涉及 MySQL MATCH() AGAINST() 和其他一些复杂性。

欢迎任何帮助。发送!

标签: mysqllaravel

解决方案


以防万一其他人陷入这种困境,我仍然不知道为什么 Eloquent 无法解决它的模型,但我确实找到了这篇很棒的文章,它通过将 Laravel 逻辑与存储在数据库中的信息。https://josephsilber.com/posts/2018/07/02/eloquent-polymorphic-relations-morph-map#the-default-morph-type


推荐阅读