You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sp.php.twig 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. {{ "<?php" }}
  2. /**
  3. * AUTO GENERATED BY LUTICATE GENERATOR
  4. * ANY CHANGES WILL BE OVERWRITTEN
  5. */
  6. namespace {{ sp_namespace.as_it }};
  7. use Luticate\Utils\DataAccess\LuStoredProcedure;
  8. use Luticate\Utils\Dbo\LuMultipleDbo;
  9. use Luticate\Utils\Business\LuStringUtils;
  10. use Luticate\Utils\Business\LuArrayUtils;
  11. use Illuminate\Database\Capsule\Manager as Capsule;
  12. use {{ dbo_namespace.as_it }}\{{ dboName.camel_upper }};
  13. use {{ dbo_namespace.as_it }}\{{ dboName.camel_upper }}Array;
  14. class {{ sp.sp_name.camel_upper }} extends LuStoredProcedure {
  15. {% set spcall %}{{ sp.sp_name.as_it }}({% for arg in args.in %}:{{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %}){% endset %}
  16. {% set argsarray %}{% for arg in args.in %}":{{ arg.name.as_it }}" => ${{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %}{% endset %}
  17. /**
  18. {% for arg in args.in %}
  19. * @param ${{ arg.name.as_it }} {{ arg.data_type.php.as_it }}
  20. {% endfor %}
  21. * @return {{ dboName.camel_upper }}{% if sp.proretset %}[]{% endif %}
  22. */
  23. public static function execute({% for arg in args.in %}${{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %})
  24. {
  25. $values = static::getConnection()->select('SELECT {% for arg in args.out %}to_json(data.{{ arg.name.as_it }}) AS {{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %} FROM {{ spcall }} data', array({{ argsarray }}));
  26. {% if sp.proretset %}
  27. $dboValues = array();
  28. foreach ($values as $value) {
  29. $json = LuArrayUtils::objectToArray($value);
  30. $dboValues[] = {{ dboName.camel_upper }}::jsonDeserialize($json);
  31. }
  32. return $dboValues;
  33. {% else %}
  34. $json = LuArrayUtils::objectToArray($values[0]);
  35. return {{ dboName.camel_upper }}::jsonDeserialize($json);
  36. {% endif %}
  37. }
  38. {% if sp.proretset %}
  39. /**
  40. {% for arg in args.in %}
  41. * @param ${{ arg.name.as_it }} {{ arg.data_type.php.as_it }}
  42. {% endfor %}
  43. * @param $page int The page number, 0 based
  44. * @param $perPage int The number of items per page
  45. * @return LuMultipleDbo
  46. */
  47. public static function getMultipleJson({% for arg in args.in %}${{ arg.name.as_it }}, {% endfor %}$page, $perPage)
  48. {
  49. $values = static::getConnection()->select('SELECT (SELECT count(*) FROM {{ spcall }}) as count, (SELECT json_agg(q) FROM (SELECT * FROM {{ spcall }} OFFSET (:page::int * :perPage::int) LIMIT :perPage) q) as data',
  50. array({{ argsarray }}, ":page" => $page, ":perPage" => $perPage));
  51. $value = $values[0];
  52. if (is_null($value->data))
  53. {
  54. $value->data = '[]';
  55. }
  56. $json = LuStringUtils::convertJsonString($value->data);
  57. $data = {{ dboName.camel_upper }}Array::jsonDeserialize($json);
  58. return new LuMultipleDbo($value->count, $data->getArray());
  59. }
  60. {% endif %}
  61. }