如何在 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 4.2 中创建自定义 DB Query Builder 方法
Laravel JSON API: 如何从数据库中创建自定义的虚拟资源(用于聚合值)?