【问题标题】:Laravel function in model模型中的 Laravel 函数
【发布时间】:2017-02-23 18:16:54
【问题描述】:

我有一个 Laravel 模型,里面有一个简单的函数。但由于某种原因,我收到此错误:

关系方法必须返回一个对象类型 照亮\数据库\雄辩\关系\关系

这是我的模型:

class Dish extends Model
{
    public function sum() {
        return $this->attributes['begin'] + 10;  
    }
}

在我的控制器中我这样做:

$model->sum();

有人知道如何将函数添加到我的模型中吗?

提前非常感谢!

【问题讨论】:

  • $this 指向哪里?
  • 你确定错误是针对那行代码的吗?
  • 您是否要将此作为关系加载?像$model = Dish::with('sum')->where('id', 3)->first(); 什么的?
  • 你可以用$this->begin + 10代替$this->attributes['begin'] + 10吗?不知道为什么这会是一个问题,但这是一种预感。 Laravel 认为它在这里建立了一种雄辩的关系,请参阅上面 Simon 的评论。
  • 你能展示你的整个相关控制器代码吗?您的功能或通话没有任何问题。确定错误堆栈指向这一行?

标签: php laravel eloquent


【解决方案1】:

如果将使用模型数据执行计算,则无需使用$this->attributes 来获取模型数据,这样实际上会使其更“脏”一点。在 cmets 中提到的最干净的方式:

public function sumBegin($default = 10)
{
    return $this->begin + $default;
}

这样我们将 begin 用于当前被调用的模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-06
    • 2017-10-05
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2023-01-25
    • 2023-03-03
    相关资源
    最近更新 更多