从laravel helper调用自定义mysql函数

时间:2017-11-20 17:21:03

标签: laravel laravel-5 mysql-error-1064

我创建了一个帮助程序来运行mysql中的自定义函数,我正在尝试匹配
   在DB中找到的参数,如果成功则返回X.

刀片:

 @foreach($ficha as $est)
         @foreach($est->equipos as $eq)
            @foreach($eq->parametros as $param)

             <p>{{ tiene_parametro_ficha($param->nombre ,$ficha->first()->id) }}</p>   //FUNCTION, pass 2 values

               @endforeach      
            @endforeach
         @endforeach  

助手:

 function tiene_parametro_ficha($param, $id_est)
  {
   $queries =DB::select("tiene_parametro_ficha($param, $id_est)");  //I tried alias Result , it gives error too
 } 

Mysql功能:

  BEGIN
  DECLARE mivar INT;
  SET @PAR=PARAM;
  SET @ID_EST = ID_EST;


 SELECT  (if((p.nombre = @PAR),1,0)) INTO mivar
 FROM estacion AS e
        INNER JOIN equipo_estacion AS ee ON ee.estacion_id = @ID_EST
        INNER JOIN equipo AS eq ON eq.id = ee.equipo_id
        INNER JOIN equipo_parametro AS e_p ON e_p.equipo_id = eq.id
        INNER JOIN parametro AS p ON p.id = e_p.parametro_id
      WHERE p.nombre = @PAR AND ee.estado ="activo" AND
      eq.deleted_at IS NULL LIMIT 1;

    CASE mivar
    WHEN 1 THEN
    RETURN 'X';
    WHEN 0 THEN
    RETURN '0'; 
    ELSE
    RETURN '';
   END CASE;
   END

我得到错误   enter image description here

1 个答案:

答案 0 :(得分:2)

您的查询中确实遗漏了SELECT

而不是:

$queries = DB::select("tiene_parametro_ficha($param, $id_est)");

使用:

$queries = DB::select("SELECT tiene_parametro_ficha($param, $id_est)");

Reference for raw queries

还要注意,从这样的视图中运行任何查询是非常糟糕的做法。您应该在控制器中运行这些功能,并在Blade视图中使用结果。