Php 更新Laravel4中的模型会导致一个以模型为输入的函数被调用两次
我有一个令人沮丧的bug,我不确定它是否与Laravel有关,但可能与PHP有关 有一点背景:我正在构建一个有点复杂的任务系统,用于处理支持票证的工作流过程——至少我的系统可以大致转换为这样一个系统 如果票证在当前工作流步骤中超过了截止日期,我将使用以下代码。工作流步骤可以关联截止日期Php 更新Laravel4中的模型会导致一个以模型为输入的函数被调用两次,php,laravel-4,Php,Laravel 4,我有一个令人沮丧的bug,我不确定它是否与Laravel有关,但可能与PHP有关 有一点背景:我正在构建一个有点复杂的任务系统,用于处理支持票证的工作流过程——至少我的系统可以大致转换为这样一个系统 如果票证在当前工作流步骤中超过了截止日期,我将使用以下代码。工作流步骤可以关联截止日期 public static function proceedToFallbackStep($submission_id) { $submission = Submission::find($submiss
public static function proceedToFallbackStep($submission_id)
{
$submission = Submission::find($submission_id);
$currentworkflowstep = $submission->currentworkflowstep;
if ($currentworkflowstep != null)
{
$fallbackstep = $currentworkflowstep->fallbackto;
if ($fallbackstep != null)
{
WorkflowController::performWorkflowStepAction($fallbackstep->id,$submission_id);
$submission->currentworkflowstep()->associate($fallbackstep);
$submission->save();
}
}
}
现在我的问题是,出于某种原因,WorkflowController::performWorkflowStepAction方法被调用了两次。这种方法包括发送电子邮件和更新表格。让我用proceedToFallbackStep方法来表达我的想法。首先,它检查提交代码中的票据是否与当前工作流步骤关联,在某些情况下可能不是这样。然后检查当前工作流步骤是否关联了回退步骤。如果是,则执行与回退步骤相关的操作。现在,这可以按预期工作,但当我在运行WorkflowController::performWorkflowStepAction后更新票据的当前工作流步骤关联时,WorkflowController::performWorkflowStepAction会再次执行,我不知道为什么。如果我漏掉了
$submission->currentworkflowstep()->associate($fallbackstep); //This is the line causing the bug
$submission->save();
行它应该工作,但票证有一个错误的相关当前工作流步骤。我尝试过使用DB::raw更新票据的当前工作流步骤关联,但结果是相同的。你知道问题出在哪里吗