【问题标题】:How do I create a custom relationship in laravel?如何在 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 等)的情况下做到这一点

【问题讨论】:

标签: php laravel eloquent relationship


【解决方案1】:

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

public function tasks()
{
    return $this->hasMany(Task::class)
        ->where('priority', 10);
}

【讨论】:

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

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

并添加您自己的。

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

也看看herehere

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2016-01-11
    • 2016-07-18
    • 2018-01-21
    • 2014-11-16
    相关资源
    最近更新 更多