从 laravel 助手调用自定义 mysql 函数

Call custom mysql function from laravel helper

我在 mysql 中为 运行 自定义函数创建了一个助手,我正在尝试匹配
在数据库中找到的参数,因此如果成功,它应该 return X。

Blade :

 @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

我得到错误

确定您的查询中缺少 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 视图中使用结果。