➜ Implementación CRUD Pedidos
Implementación de la 7 | Implementación de la Sección administrativa para Pedidos, Modelo Pedido y Detalle, Controlador, Vistas y rutas
Implementación de la Sección administrativa para Pedidos, Modelo Pedido y Detalle, Controlador, Vistas y rutas
Model Pedido.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Pedido extends Model
{
    use HasFactory;
    protected $fillable = [
        'subtotal',
        'impuesto',
        'total',
        'fechapedido',
        'procedencia',
        'estado',
        'user_id'
    ];
    public function detalles(){
        return $this->hasMany(Detalle::class);
    }
    
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}
Migración
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('pedidos', function (Blueprint $table) {
            $table->id();
            $table->decimal('subtotal',7,2);
            $table->decimal('impuesto',7,2);
            $table->decimal('total',7,2);            
            $table->datetime('fechapedido');
            $table->enum('procedencia',["web","app"])->default("app");
            $table->enum('estado',["nuevo","proceso","entregado"])->default("nuevo");
            $table->foreignId('user_id')->references('id')->on('users');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('pedidos');
    }
};
Controlador
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Pedido;
class PedidoController extends Controller
{
    public function index(){
        $pedidos = Pedido::orderByDesc("updated_at")->get();
        return view('admin.pedido.index', compact("pedidos") );
    }
    public function edit($id){
        $pedido = Pedido::find($id);
        return view('admin.pedido.edit', compact("pedido") );
    }
    public function update(Request $request, $id){
        $pedido =Pedido::findOrFail($id);
        $pedido->fill($request->all());
        $pedido->save();
        return redirect('admin/pedido');
    }
    
}
Vista index.blade.php
@extends('layouts.admin')
@section('content')
<div class="container">
    <div class="row justify-content-center">
    @include("admin.menu")
        <div class="col-sm-8">   
            <h1 class="mt-3 mb-3 fs-4">SECCIÓN PEDIDOS</h1>
            @if ($pedidos->count())
            <table class="table table-bordered">
                <tr>
                    <th>ID</th>
                    <th>CLIENTE</th>
                    <th>FECHA PEDIDO</th>
                    <th>PROCEDENCIA</th>
                    <th>TOTAL USD</th>                    
                    <th>ESTADO</th>
                    <th>ACCIÓN</th>
                </tr>
                @forelse ($pedidos as $c)
                <tr>
                    <td>{{$c->id}}</td>
                    <td>{{$c->user->name}}</td>
                    <td>{{$c->fechapedido}}</td>
                    <td>{{$c->procedencia}}</td>
                    <td>{{$c->total}}</td>
                    <td>{{$c->estado}}</td>
                    <td>
                        <a href="{{route("admin.pedido.edit",$c->id)}}" class="btn btn-success">Ver detalle</a>
                    </td>
                </tr>
                @empty
                    <tr><td></td></tr>
                @endforelse
            </table>
                
            @endif
        </div>
    </div>
</div>
@endsection
Vista edit.blade.php
@extends('layouts.admin')
@section('content')
<div class="container">
    <div class="row justify-content-center">
    @include("admin.menu")
        <div class="col-sm-8"> 
            <div class="card">
                <div class="card-header">
                    <div class="row">
                        <div class="col-sm-6">
                            <h1 class="fs-4" >PEDIDO N: {{$pedido->id}} {{strtoupper($pedido->estado)}}</h1>
                        </div>
                        <div class="col-sm-6">
                            {!! Form::open(['route'=>['admin.pedido.update',$pedido],'method'=>'PUT']) !!}
                            <div class="row">
                                <div class="col-6">
                                    {!! Form::select('estado',["nuevo"=>"Nuevo","proceso"=>"Proceso","entregado"=>"Entregado"],$pedido->estado,['class'=>'form-control','required']) !!}
                                </div>
                                <div class="col-6">
                                    {{ Form::submit('ACTUALIZAR',['class'=>'btn btn-success w-100']) }}
                                </div>
                            </div>
                            {!! Form::close() !!}
                        </div>
                    </div>
                </div>
                <div class="card-body">
                    <ul class="list-group">
                        <li class="list-group-item">Cliente: {{$pedido->user->name}}</li>
                        <li class="list-group-item">Celular: {{$pedido->user->celular}}</li>
                        <li class="list-group-item">Email: {{$pedido->user->email}}</li>
                        <li class="list-group-item">Dirección: {{$pedido->user->direccion}}</li>
                        <li class="list-group-item">Fecha Pedido: {{$pedido->fechapedido}}</li>
                    </ul>
                </div>
                <table class="table table-striped">
                    <thead>
                        <th>Producto</th>
                        <th>Cantidad</th>
                        <th>Precio</th>
                        <th>Importe</th>
                    </thead>
                    <tbody>
                        @forelse ($pedido->detalles as $item)
                        <tr>
                            <td>{{$item->producto->nombre}}</td>
                            <td>{{$item->cantidad}}</td>
                            <td>{{$item->precio}}</td>
                            <td>{{$item->importe}}</td>
                        </tr>    
                        @empty
                            
                        @endforelse
                        <tr><td colspan="4" class="text-end">SubTotal: {{$pedido->subtotal}}</td></tr>
                        <tr><td colspan="4" class="text-end">Impuesto 18%: {{$pedido->impuesto}}</td></tr>
                        <tr><td colspan="4" class="text-end">Total: {{$pedido->total}}</td></tr>
                        
                    </tbody>
                </table>
            </div>
        </div>
        <a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
    </div>
</div>
@endsection
1442 visitas
Capítulo 8 – Implementación CRUD Clientes »
Descarga el código del proyecto
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar