Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/taguz91/acomer-backend
Rest API para una aplicacion de restaurantes
https://github.com/taguz91/acomer-backend
Last synced: about 2 months ago
JSON representation
Rest API para una aplicacion de restaurantes
- Host: GitHub
- URL: https://github.com/taguz91/acomer-backend
- Owner: taguz91
- Created: 2020-03-30T03:21:42.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T17:53:27.000Z (about 2 years ago)
- Last Synced: 2024-05-28T00:30:44.112Z (8 months ago)
- Language: PHP
- Size: 623 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AComer - Backend
Rest API
#### Notas
Creando migrations: Modelado de la base de datos.
```
> php artisan make:migration create_nombre_table
```Creando seeders: Insertando datos de prueba en una base de datos.
```
> php artisan make:seeder NombreSeeder
```Creando models: Son los modelos que manejaremos en php para realizar consultas y relaciones.
```
> php artisan make:model Models/Nombre
```Creando los controllers: Nos serviran para las peticiones realizadas en los servicios.
```
> php artisan make:controller api/v1/NombreController --api
```Creando un resources: Estos nos funcionan para mapear en un JSON el objeto.
```
> // Este solo nos sirve para mapear un objeto
> php artisan make:resource NombreResource
> // Este nos sirve para mapear muchos objetos podemos usar el Resource dentro de este
> php artisan make:resource NombreCollection
```En todos los resources de tipo collection debe utilizar el trait NewCollectionResponse.
```php
use NewCollectionResponse;
// En la funcion toArray se debe utilizar el metodo newCollectionResponsepublic function toArray($request)
{
return $this->newCollectionResponse(
NombreResource::collection($this->collection)
);
}
```Definir solo rutas para api:
```php
Route::apiResource('', '');
```Migrar todos los modelos a la base de datos
```
> php artisan migrate
```Creamos request: Son las resonsables de manejar los formularios, aqui programaremos toda la logia para un store o un update.
```
> php artisan make:request NombreRequest
> // Acciones : Create | Update
```En todos nuestros request debemos utilizar el trait de FalidValidation. Solo debemos escribir el siguiente codigo en las clases request.
```php
use FailedValidation;
```Creamos factories: Estos nos ayudaran a poblar nuestra base de datos, generando datos de prueba.
```
> php artisan make:factory NombreFactory
```Ejecutamos los seeders, para poblar nuestra bd.
```
> php artisan migrate:refresh
> composer dump-autoload
> php artisa db:seed
```### Ejemplos
Una buen ejemplo del poder de Eloquent
```php
$users = User::select([
'users.*',
'last_posted_at' => Post::selectRaw('MAX(created_at)')
->whereColumn('user_id', 'users.id')
])->withCasts([
'last_posted_at' => 'date'
])->get();
```Cast para ser usados en las respuestas JSON esto se le agrega en el modelo.
```php
protected $casts = [
'birthday' => 'date:Y-m-d',
'joined_at' => 'datetime:Y-m-d H:00',
];
```Ejemplo de una foreignkey.
```php
$table->foreign('profession_id')->references('id')->on('professions');
```Obtenemos los objetos eliminados.
```php
$res = Restaurante::withTrashed()
->where('id', $id)
->get();
```Activamos los objetos eliminados.
```php
$res = Restaurante::withTrashed()
->where('id', $id)
->restore();
```Ejemplos de querys.
```php
return Cliente::select([
'id',
'nombre',
'apellido',
'extra' => Cliente::selectRaw('MAX(created_at)')
->whereColumn('id', 'clientes.id')
])->get();return Cliente::with(['favoritos.plato:id,url_imagen', 'sugerencias'])->get();
return Cliente::with(['facturas.pedido.mesa'])->get();
return Cliente::with(['facturas.pedido:id,platos'])->get();
return Cliente::paginate(30);
```