php - 带有模型的 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 不代表使用此特征的模型吗?
解决方案
Alpha 所说的另一种变体。
/**
* @return $this
* @throws Exception
*/
public function markCompleted(){
if($this->canDoAction('complete')){
$this->completed_at = Carbon::now();
}
return $this;
}
这样你总是返回一个模型,如果需要,你可以在执行保存之前链接其他函数。