{"id":22432117,"url":"https://github.com/normalhuman01/package-restful-helper-php-laravel","last_synced_at":"2025-03-27T07:41:30.156Z","repository":{"id":215342343,"uuid":"738702693","full_name":"normalhuman01/package-restful-helper-php-laravel","owner":"normalhuman01","description":"a laravel helper to packages restful projects","archived":false,"fork":false,"pushed_at":"2024-01-03T21:08:16.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T12:45:26.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/normalhuman01.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2024-01-03T21:05:46.000Z","updated_at":"2024-01-03T21:06:48.000Z","dependencies_parsed_at":"2024-01-03T22:23:35.254Z","dependency_job_id":"b7c3825b-a290-4f22-bb30-8cc763aaa9f8","html_url":"https://github.com/normalhuman01/package-restful-helper-php-laravel","commit_stats":null,"previous_names":["normalhuman01/package-restful-helper-php-laravel"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normalhuman01%2Fpackage-restful-helper-php-laravel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normalhuman01%2Fpackage-restful-helper-php-laravel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normalhuman01%2Fpackage-restful-helper-php-laravel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/normalhuman01%2Fpackage-restful-helper-php-laravel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/normalhuman01","download_url":"https://codeload.github.com/normalhuman01/package-restful-helper-php-laravel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245805992,"owners_count":20675291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T22:10:39.227Z","updated_at":"2025-03-27T07:41:30.131Z","avatar_url":"https://github.com/normalhuman01.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Helper de RESTful para Laravel\n\n## Instalación\n\nA través del Composer\n\n``` bash\n$ composer require mrjmpl3/laravel-restful-helper\n```\n\n## Uso\n\nEste paquete realiza consultas basadas en la solicitud, similar a GraphQL.\n\n### Solicitudes\n\n- **Filtrar datos:** /producto?columna=valor\u0026columna2=valor2\n- **Ordenar datos:** /producto?sort=-columna1,columna2\n    - Con el prefijo negativo = desc\n    - Sin el prefijo negativo = asc\n- **Seleccionar campos:** /producto?fields=columna1,columna2,columna3,columna4\n- **Paginar y por página:** /producto?paginate=true\u0026per_page=5\n- **Incrustar:** /producto?embed=funcionRelacion\n\n### Código\n\n#### A Colección\n\n```\n// Crea una instancia simple del modelo donde deseas aplicar las consultas\n$modelo = new Producto();\n$ayudanteRest = new ApiRestHelper($modelo);\n          \n// El método 'toCollection' devuelve una colección con todos los datos filtrados\n$respuesta = $ayudanteRest-\u003etoCollection();\n```\n      \n#### A Modelo\n\n```\n// Crea una instancia simple del modelo donde deseas aplicar las consultas\n$modelo = new Producto();           \n$ayudanteRest = new ApiRestHelper($modelo);\n                \n// El método 'toModel' devuelve un modelo con todos los datos filtrados\n$respuesta = $ayudanteRest-\u003etoModel();\n```\n      \n#### De Constructor a Colección\n\n```\n// ¡Importante! No cierres la consulta con get() o paginate()\n$consulta = Producto::where('estado', '=', 1);\n$ayudanteRest = new ApiRestHelper($consulta);\n          \n// El método 'toCollection' devuelve una colección con todos los datos filtrados\n$respuesta = $ayudanteRest-\u003etoCollection();\n```\n      \n#### Relaciones\n\n- En el modelo, agrega un array como en el siguiente ejemplo:\n\n    ```\n    public $apiAcceptRelations = [\n        'post'\n    ];\n    ```\n    Donde 'post' es el nombre de la función de relación.\n                \n- En los Recursos de la API, utiliza la función incrustar:\n\n    ```\n    public function toArray($solicitud) {\n        $incrustar = (new ApiRestHelper)-\u003egetEmbed();\n                \n        return [\n          'id' =\u003e $this-\u003eid,\n          'nombre' =\u003e $this-\u003enombre,\n          $this-\u003emergeWhen(array_key_exists('post', $incrustar), [\n              'post' =\u003e $this-\u003egetPostResource($incrustar),\n          ]),\n          'creado_en' =\u003e $this-\u003ecreado_en,\n          'actualizado_en' =\u003e $this-\u003eactualizado_en,\n        ];\n    }\n            \n    private function getPostResource($solicitudIncrustar) {\n      $recursoPost = NULL;\n                \n      if (array_key_exists('local', $incrustar)) {\n          $relacionPost = $this-\u003elocal();                    \n          $camposDesdeIncrustar = (new ApiRestHelper($relacionPost-\u003egetModel()))-\u003egetEmbedField('post');\n                    \n          if(!empty($camposDesdeIncrustar)) {\n              $recursoPost = new PostResource($relacionPost-\u003eselect($camposDesdeIncrustar)-\u003efirst());\n          } else {\n              $recursoPost = new PostResource($relacionPost-\u003efirst());\n          }\n      }\n            \n      return $recursoPost;\n    }\n    ```\n#### Transformadores\n\n- En el modelo, agrega un array como en el siguiente ejemplo:\n\t\n```\npublic $apiTransforms = [\n    'id' =\u003e 'codigo'\n];\n```\n\t\t\nDonde 'id' es el nombre de la columna de la base de datos y 'codigo' es el nombre de la columna para la respuesta.\n\t\n- En los Recursos de la API, utiliza el array $apiTransforms\n\t\n```\n$ayudanteApi = new ApiRestHelper($this);\n\nreturn [\n    $ayudanteApi-\u003egetKeyTransformed('id') =\u003e $this-\u003eid,\n    'nombre' =\u003e $this-\u003enombre,\n    'creado_en' =\u003e $this-\u003ecreado_en,\n    'actualizado_en' =\u003e $this-\u003eactualizado_en,\n];\n```\n\n- Para utilizar campos en Recursos de API, puedes combinarlos con campos de transformadores\n    \n```\n$ayudanteApi = new ApiRestHelper($this);\n\nreturn [\n    $this-\u003emergeWhen($ayudanteApi-\u003eexistInFields('id') \u0026\u0026 !is_null($this-\u003eid), [\n        $this-\u003etransforms['id'] =\u003e $this-\u003eid\n    ]),\n    $this-\u003emergeWhen($ayudanteApi-\u003eexistInFields('nombre') \u0026\u0026 !is_null($this-\u003enombre), [\n        'nombre' =\u003e $this-\u003enombre\n    ]),\n]\n```\n\n#### Excluir Campos en el Filtro\n\n- En el modelo, agrega un array como en el siguiente ejemplo:\n\t\n```\npublic $apiExcludeFilter = [\n    'id'\n];\n```\n\t\t\nDonde 'id' es el nombre de la columna de la base de datos a excluir.\n\n## Registro de cambios\n\nConsulta [CHANGELOG](CHANGELOG.md) para obtener más información sobre lo que ha cambiado recientemente.\n\n## Seguridad\n\nSi descubres problemas relacionados con la seguridad, envía un correo electrónico a jmpl3.soporte@gmail.com en lugar de usar el seguimiento de problemas.\n\n## Licencia\n\nLicencia MIT (MIT). Consulta [Archivo de licencia](LICENSE.md) para obtener más información.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnormalhuman01%2Fpackage-restful-helper-php-laravel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnormalhuman01%2Fpackage-restful-helper-php-laravel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnormalhuman01%2Fpackage-restful-helper-php-laravel/lists"}