首页 > 解决方案 > 带有模型的 Laravel PHP 特征

问题描述

我有一个 PHP 特征,我将在任何可以执行特定操作的模型中使用它。例如,其中一项操作是完成,其中 completed_at 用时间戳标记。

特征方法是:

/**
 * @return $this
 * @throws Exception
 */
public function markCompleted(){
    if($this->canDoAction('complete')){
        $this->completed_at = Carbon::now();
        return $this;
    }
}

在我的控制器中,我在可以执行以下操作的模型上调用它。

$app->markCompleted()->save();

$app 当我查看它的内容时它不为空。

运行此命令会返回一个错误,例如

local.ERROR: Call to a member function save() on null

$this 不代表使用此特征的模型吗?

标签: phplaravellaravel-5

解决方案


Alpha 所说的另一种变体。

/**
 * @return $this
 * @throws Exception
 */
public function markCompleted(){
    if($this->canDoAction('complete')){
        $this->completed_at = Carbon::now();
    }
    return $this;
}

这样你总是返回一个模型,如果需要,你可以在执行保存之前链接其他函数。


推荐阅读