php artisan install:api
cphp artisan make:controller Api/UserController --api
php artisan make:controller Api/APISimpleController --api
php artisan make:controller Api/TaskController --api
php artisan make:migration create_tasks_table
php artisan make:factory TaskFactory --model=Task
se crea la ruta de tasks se trabaja con index de tasks
public function store(Request $request) {
$task = Task::create( $request->all());
return response()->json($task, 201);
}
public function show(Task $task) {
return $task;
}
public function update(Request $request, $task) {
$task = Task::find($task);
$task->update( $request->all());
return response()->json($task);
}
public function destroy($task) {
$task = Task::find($task);
$task->delete();
return response()->json(null, 204);
}
public function store(Request $request)
{
$request->validate([
'title' => 'required|string|max:255',
'body' => 'required|string|max:1000',
'user_id' => 'required|exists:users,id',
]);
$task = Task::create($request->all());
return response()->json($task, 201);
php artisan make:request StoreTaskRequest
php artisan make:request UpdateTaskRequest
este metodo viene por defal con false hay que cambiarlo a true para que corra bien
public function authorize(): bool
{
return true;
}
public function index()
{
$tasks = Task::query();
if (request('perPage')){
$tasks = $tasks->paginate(request('perPage'));
} else{
$tasks = $tasks->get();
}
return response()->json([$tasks]);
}
if (request('filters')) {
$filters = request('filters');
foreach ($filters as $field => $conditions) {
foreach ($conditions as $operator => $value) {
if (in_array($operator, ['=', '!=', '>', '<', '>=', '<='])) {
$tasks->where($field, $operator, $value); // Aplicar cada filtro
}
if (in_array($operator, ['like', 'not like'])) {
$tasks->where($field, $operator, '%' . $value . '%'); // Aplicar cada filtro
}
}
}
}
if (request('select')) {
$select = request('select');
$select = str_replace(' ', '', $select); // Eliminar espacios en blanco
$selectArray = explode(',', $select); //separa todos los elemento sepárados por comas
$tasks->select($selectArray); // Aplicar selección de campos
}
if (request('sort')) {
$sortFields = explode(',', request('sort'));
foreach ($sortFields as $sortField){
$direction = 'asc'; // Valor por defecto
$sortField = str_replace(' ', '', $sortField); // Eliminar espacios en blanco
if (substr($sortField, 0,1) === '-') {
$direction = 'desc'; // Cambiar a descendente si el primer carácter es '-'
$sortField =(substr($sortField , 1)); // Eliminar el primer carácter '-'
}
$tasks->orderBy($sortField, $direction); // Ordenar por el campo y la dirección
}
} // fin de sort
-
Incluir relaciones
if (request('include')) { $include = str_replace(' ', '', request('include')); // Eliminar espacios en blanco $includesArray = explode(',', $include); // Separar por comas $tasks = $tasks->with($includesArray); // Aplicar relaciones }