如何在 laravel 中创建自定义关系?

Posted

技术标签:

【中文标题】如何在 laravel 中创建自定义关系?【英文标题】:How do I create a custom relationship in laravel? 【发布时间】:2020-04-06 15:32:21 【问题描述】:

是否可以像这样在 Laravel 中创建自定义关系,

SELECT tasks.* 
FROM tasks
LEFT JOIN priorities ON tasks.priority_identifier LIKE CONCAT('%', priorities.identifier)
WHERE priority.id = 10

我可以使用查询生成器来创建此连接,但我如何将其作为 laravel 关系返回?

编辑

我试图在不使用现有关系方法(hasMany、hasOne 等)的情况下做到这一点

【问题讨论】:

Custom Laravel Relations? 我认为这个链接可能对你有帮助 【参考方案1】:

是的,您可以像任何其他查询构建器一样向 Laravel 关系添加条件。我不知道你的关系会是什么样子,但你可以这样做:

public function tasks()

    return $this->hasMany(Task::class)
        ->where('priority', 10);

【讨论】:

谢谢。但是我可以在不使用现有方法的情况下创建一个全新的关系方法吗? 是的,只需重命名函数并创建任意数量的函数即可。 :) 您的意思是tasks() 对吗?但我说的是这个hasMany()【参考方案2】:

我认为您不能创建自定义关系,除非覆盖 Eloquent base class。

并添加您自己的。

但您可以使用 Eloquent scopes 替代自定义 relationships。

也看看here和here

【讨论】:

以上是关于如何在 laravel 中创建自定义关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.6 中创建自定义帮助文件?

如何在 Laravel 4.2 中创建自定义 DB Query Builder 方法

Laravel JSON API: 如何从数据库中创建自定义的虚拟资源(用于聚合值)?

如何在 Sequelize 中的导入模型中创建自定义方法或函数

如何在 QML 中创建自定义对象?

在 dotnet 3.5 中创建自定义控件的命令 [关闭]