Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新Laravel4中的模型会导致一个以模型为输入的函数被调用两次_Php_Laravel 4 - Fatal编程技术网

Php 更新Laravel4中的模型会导致一个以模型为输入的函数被调用两次

Php 更新Laravel4中的模型会导致一个以模型为输入的函数被调用两次,php,laravel-4,Php,Laravel 4,我有一个令人沮丧的bug,我不确定它是否与Laravel有关,但可能与PHP有关 有一点背景:我正在构建一个有点复杂的任务系统,用于处理支持票证的工作流过程——至少我的系统可以大致转换为这样一个系统 如果票证在当前工作流步骤中超过了截止日期,我将使用以下代码。工作流步骤可以关联截止日期 public static function proceedToFallbackStep($submission_id) { $submission = Submission::find($submiss

我有一个令人沮丧的bug,我不确定它是否与Laravel有关,但可能与PHP有关

有一点背景:我正在构建一个有点复杂的任务系统,用于处理支持票证的工作流过程——至少我的系统可以大致转换为这样一个系统

如果票证在当前工作流步骤中超过了截止日期,我将使用以下代码。工作流步骤可以关联截止日期

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更新票据的当前工作流步骤关联,但结果是相同的。你知道问题出在哪里吗