Я создал помощника для запуска пользовательской функции в mysql, я пытаюсь сопоставить
параметры, найденные в БД, поэтому он должен вернуть 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  

Helper :

 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

Я получаю ошибку введите описание изображения здесь

0
Rodrigo Cabrera 20 Ноя 2017 в 20:21

1 ответ

Лучший ответ

Конечно, в вашем запросе отсутствует SELECT.

Вместо того:

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

Использование:

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

Справочник по необработанным запросам

Также имейте в виду: запуск любого запроса из такого представления - очень плохая практика. Вы должны запустить эти функции (и другие запросы) в контроллере и использовать результат в представлении Blade.

4
Derk Jan Speelman 23 Окт 2020 в 20:39