函数调用其他函数

时间:2018-09-29 19:05:15

标签: laravel

我的控制器中有一个调用刀片的函数:

public function detalhe(Request $request){
    //pega o ID da marcação
    $id = $request['id'];
    $marcacao = Marcacao::find($id);

    //prepara a receita pra ser criada
    $dadosReceita['marcacao_id'] = $id;
    $dadosReceita['codigo'] = $marcacao->id . $marcacao->cidadao_id . $marcacao->agenda_id;
    //consulta a receita
    $receita = Receita::where('marcacao_id', $id)->first();
    //verifica se existe a receita / cria a receita
    if (count($receita) > 0){
        $receitas_id = $receita['id'];    
    }else{
        $receita = Receita::create($dadosReceita);
        $receitas_id = $receita['id'];
    }
    //pega a lista dos produtos da receita
    $produtoReceitas = ProdutoReceita::where('receitas_id', $receitas_id)->get();

    //prepara o prontuario pra ser criado
    $dadosProntuario['marcacao_id'] = $id;
    //consulta o prontuario
    $prontuario = Prontuario::where('marcacao_id', $id)->first();
    //verifica se existe o prontuario / cria o prontuario
    if (count($prontuario) > 0){
        $prontuario_id = $prontuario['id'];    
    }else{
        $prontuario = Prontuario::create($dadosProntuario);
        $prontuario_id = $prontuario['id'];
    }
    //pega a lista dos ciaps do prontuario
    $ciapProntuarios = CiapProntuario::where('prontuario_id', $prontuario_id)->get();

    //pega a lista de produtos da undade
    $produtos = ProdutoUnidade::where('unidade_id', 2)
                              ->get();

    $vencimento = new DateTime(date("y-m-d"));
    $vencimento->add(new DateInterval('P90D'));
    $vencimento = $vencimento->format('y-m-d');

    $ciaps = Ciap::where('sexo', $marcacao->cidadao->sexo)
                 ->orWhere('sexo', 'A')
                 ->get();

    return view('agendas.detalhe', compact('ciapsProntuario', 'marcacao', 'produtos', 'vencimento', 'ciaps', 'receitas_id', 'prontuario_id', 'produtoReceitas'));
}

这非常大。我还有其他功能类似于上面的功能,但是只有三行不同。

我喜欢像下面那样做第二个功能

public function two(){
    //other lines differente
    return detalhe(); //return my other function
}

输入此代码后,我收到错误消息:

  
    

FatalErrorException

         

调用未定义函数App \ Http \ Controllers \ detalhe()

  

1 个答案:

答案 0 :(得分:3)

您需要使用$this。如果它属于同一控制器,请使用$this->detalhe()对其进行调用。否则,请使用return redirect()->action('YourAction@YourController')