Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.05.2021 19:33:05

Не выполняется запрос на функцию в базу данных

В базе данных postgreSQL есть функция для создания поездки

CREATE OR REPLACE FUNCTION makeorder(board VARCHAR, date_j DATE, time_j TIME,VARIADIC dest VARCHAR[])
RETURNS VOID
AS $$
DECLARE tempo INT;
DECLARE jour INT;
BEGIN
INSERT INTO journeys(boarding,date_journey,time_journey) 
VALUES (board,date_j,time_j);
jour:=MAX(id) FROM journeys;
FOR i IN 1 .. array_upper(dest,1) LOOP
INSERT INTO destinations(dest_name,id_prev,journ_id)
VALUES(dest[i],tempo,jour);
tempo:=MAX(id) FROM destinations;
END LOOP;
END;
$$ Language plpgsql;

Пытаюсь вызвать ее через

 
        $journey=new Journey();
        $journey->boarding=$request->input('From');
        $journey->date_journey=$request->input('date');
        $journey->time_journey=$request->input('time');
        $destin=new Destination();
        $destin->dest_name=$request->input('To');
        DB::statement('select * from makeorder(?,?)',[$journey,$destin]);

Ошибок нет, но в базе данных не выполняется сама функция, таблицы не заполняются

Не в сети

#2 Сегодня 09:43:45

Re: Не выполняется запрос на функцию в базу данных

The issue is that you’re passing Eloquent model objects to PostgreSQL instead of the actual values expected by makeorder(). Pass the boarding point, date, time, and destination as strings/parameters matching the function signature, and include the required VARIADIC destination array; for example, DB::select('SELECT makeorder(?, ?, ?, ?)', [$from, $date, $time, [$to]]).

Не в сети

Подвал раздела