2013-03-19 3 views
2

Как вызвать хранимую процедуру в Symfony2?Вызовите хранимую процедуру в Symfony2 и PostgreSQL?

Я создал хранимая процедура в PostgreSQL с именем get_manhours_all(), которая возвращает результат этого:

select 
    sum(
     extract(epoch from end_time) - extract(epoch from begin_time) 
    )/3600 as manhours 
from timeslot; 

Есть ли способ в Symfony2 для вызова get_manhours_all() - родной запрос SELECT get_manhours_all();.

+0

Предполагаю, что вы используете стандартную ORM, Doctrine? Вы можете использовать вызовы в этом или использовать необработанный вызов PostgreSQL - в руководстве по PHP обязательно есть пример. Хотя вы используете Symfony, помните, что вы просто используете PHP, поэтому на самом деле возникает вопрос: «Как я могу назвать процедуру PostgreSQL в _PHP_?». – halfer

+0

@halfer я получил это !! ... спасибо .. –

ответ

1

Нет, не существует метода Symfony 2 для вызова вашего SP, поскольку он хранится в вашей базе данных. Вы должны сделать такой звонок, используя Native SQL, как следует,

$conn  = $this->get('database_connection'); 
$statement = $conn->executeQuery('/*SQL Call to your stored procedure*/'); 
$results = $statement->fetchAll(); 
+0

да, это чистый метод .. но в моем случае у меня есть такая ошибка: «Исключение было сделано во время рендеринга шаблона («Обратите внимание: массив для преобразования строк ...» –

+0

@ AsepFajarNugraha, это, вероятно, означает, что на бэкэнд вы привязываете массив к переменной frontend, которая должна быть строкой, поэтому никаких проблем с запросом. Я полагаю, что вы должны попробуйте использовать не '$ results', а' $ results [0] 'или что-то вроде этого. Вам лучше видеть, что такое' $ results'. –

Смежные вопросы