Laravel db :: select()返回一个字符串结果

时间:2019-03-24 13:21:26

标签: mysql laravel

我正在尝试使用laravel进行选择并返回response-json,我尝试:

public function verificaQuantidadeAnimaisAprovar(){
    $quantidade_pets_aprovar = DB::select('SELECT (SELECT SUM(animal_pendente) FROM cademeupet.animais_adocao) +
        (SELECT SUM(animal_pendente) FROM cademeupet.animais_encontrados) + 
        (SELECT SUM(animal_pendente) FROM cademeupet.animais_perdidos)
        FROM DUAL '
    );

    return response()->json($quantidade_pets_aprovar, 201);
}

在bd中,当我运行以下查询时,我得到以下结果:

但是当我在邮递员中运行我的api时,我会收到:

  

[{“(从cademeupet.animais_adocao中选择SUM(animal_pendente))+ \ r \ n   (从cademeupet.animais_encontrados中选择SUM(animal_pendente))+   \ r \ n(从中选择SUM(animal_pendente)   cademeupet.animais_perdidos)“:” 36“}]

我只需要数字结果查询:36。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您正在select方法内部传递整个SQL表达式,该方法旨在执行选择sql操作。

您可能应该使用旨在处理完整sql查询的原始表达式:

public function verificaQuantidadeAnimaisAprovar(){
    $quantidade_pets_aprovar = DB::raw('SELECT (SELECT SUM(animal_pendente) FROM cademeupet.animais_adocao) +
        (SELECT SUM(animal_pendente) FROM cademeupet.animais_encontrados) + 
        (SELECT SUM(animal_pendente) FROM cademeupet.animais_perdidos)
        FROM DUAL '
    );

    return response()->json($quantidade_pets_aprovar, 200);
}

注意:我还更改了您回复的http代码,因为201(已创建)表示已创建某些内容,此处似乎没有发生。 200(确定)似乎更合适。如果此操作在您的数据库中创建了某些内容,请放回201

让我知道它是否对您有帮助:)