relaciones muchos a muchos
This commit is contained in:
parent
2ac77a2af1
commit
4ed4a05488
|
|
@ -6,6 +6,7 @@ use Illuminate\Http\Request;
|
||||||
use App\Models\Producto;
|
use App\Models\Producto;
|
||||||
use App\Models\Categorias;
|
use App\Models\Categorias;
|
||||||
use App\Models\CodigoBarras;
|
use App\Models\CodigoBarras;
|
||||||
|
use App\Models\Etiquetas;
|
||||||
class ProductoController extends Controller
|
class ProductoController extends Controller
|
||||||
{
|
{
|
||||||
public function index(Request $request){
|
public function index(Request $request){
|
||||||
|
|
@ -28,11 +29,13 @@ class ProductoController extends Controller
|
||||||
|
|
||||||
public function create(){
|
public function create(){
|
||||||
$categorias= Categorias::get();
|
$categorias= Categorias::get();
|
||||||
return view('productos.new',["categorias"=>$categorias]);
|
$etiquetas= Etiquetas::get();
|
||||||
|
return view('productos.new',["categorias"=>$categorias , "etiquetas" => $etiquetas]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request){
|
public function store(Request $request){
|
||||||
|
|
||||||
|
//return back()->withInput()->withErrors("El producto no se pudo guardar");
|
||||||
$codigo_barras= new CodigoBarras();
|
$codigo_barras= new CodigoBarras();
|
||||||
$codigo_barras->fill([
|
$codigo_barras->fill([
|
||||||
'codigo' => $request->input('codigo_barras'),
|
'codigo' => $request->input('codigo_barras'),
|
||||||
|
|
@ -48,13 +51,16 @@ class ProductoController extends Controller
|
||||||
'codigo_barras_id' => $codigo_barras->id_codigo_barras,
|
'codigo_barras_id' => $codigo_barras->id_codigo_barras,
|
||||||
]);
|
]);
|
||||||
$producto->save();
|
$producto->save();
|
||||||
|
$producto->etiquetas()->attach($request->input('etiquetas'));
|
||||||
$request->session()->flash('mensaje-success', 'El producto fue agregado.');
|
$request->session()->flash('mensaje-success', 'El producto fue agregado.');
|
||||||
return redirect('/productos');
|
return redirect('/productos');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit($id){
|
public function edit($id){
|
||||||
$producto = Producto::findOrfail($id);
|
$producto = Producto::with('categorias','codigo_barras')->findOrfail($id);
|
||||||
return view('productos.edit', ["prod"=>$producto]);
|
$categorias= Categorias::get();
|
||||||
|
$etiquetas= Etiquetas::get();
|
||||||
|
return view('productos.edit', ["prod"=>$producto, "etiquetas"=>$etiquetas, "categorias"=>$categorias]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, $id){
|
public function update(Request $request, $id){
|
||||||
|
|
|
||||||
|
|
@ -32,4 +32,14 @@ class Producto extends Model
|
||||||
|
|
||||||
return $this->belongsTo(CodigoBarras::class,'codigo_barras_id','id_codigo_barras');
|
return $this->belongsTo(CodigoBarras::class,'codigo_barras_id','id_codigo_barras');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function etiquetas()
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(
|
||||||
|
Etiquetas::class,
|
||||||
|
'productos_etiquetas',
|
||||||
|
'producto_id',
|
||||||
|
'etiqueta_id'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,26 @@
|
||||||
value="{{ old('precio', $prod->precio) }}" >
|
value="{{ old('precio', $prod->precio) }}" >
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<label for="categoria" >Categoria (*)</label>
|
||||||
|
<select name="categoria" id="categoria" style="width:100%" required>
|
||||||
|
@foreach($categorias as $cat)
|
||||||
|
<option></option>
|
||||||
|
<option value="{{$cat->id_categoria}}"
|
||||||
|
{{old('categoria',$prod->categoria_id) == $cat->id_categoria ? 'selected': ''}}>
|
||||||
|
|
||||||
|
{{$cat->nombre}}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
|
||||||
|
<label for="nombre" class="form-check-label">Codigo Barras (*)</label>
|
||||||
|
<input type="text" name="codigo_barras" id="codigo_barras" value="{{ old('codigo_barras',$prod->codigo_barras->id_codigo_barras) }}" class="form-control">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="row justify-content-center align-items-center">
|
<div class="row justify-content-center align-items-center">
|
||||||
|
|
@ -61,8 +81,20 @@
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@push('scripts')
|
@push('styles')
|
||||||
<script>
|
<link rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css">
|
||||||
</script>
|
@endpush
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||||
|
<script>
|
||||||
|
$('#categoria').select2({
|
||||||
|
placeholder:"Seleccione un categoria"
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#etiquetas').select2({
|
||||||
|
placeholder:"Seleccione Etiquetas"
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@endpush
|
@endpush
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,25 @@
|
||||||
<input type="text" name="codigo_barras" id="codigo_barras" value="{{ old('codigo_barras') }}" class="form-control">
|
<input type="text" name="codigo_barras" id="codigo_barras" value="{{ old('codigo_barras') }}" class="form-control">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-5">
|
||||||
|
<label for="etiquetas"> Etiquetas</label>
|
||||||
|
<select name="etiquetas[]" id="etiquetas" style="width:100%" multiple required>
|
||||||
|
<option></option>
|
||||||
|
@foreach($etiquetas as $etiq)
|
||||||
|
<option value="{{$etiq->id_etiqueta}}"
|
||||||
|
{{in_array($etiq->id_etiqueta,old('etiquetas',[])) ? 'selected' : ''}}
|
||||||
|
>
|
||||||
|
{{$etiq->nombre}}
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</br>
|
</br>
|
||||||
|
|
@ -88,5 +106,10 @@
|
||||||
$('#categoria').select2({
|
$('#categoria').select2({
|
||||||
placeholder:"Seleccione un categoria"
|
placeholder:"Seleccione un categoria"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#etiquetas').select2({
|
||||||
|
placeholder:"Seleccionar etiquetas"
|
||||||
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@endpush
|
@endpush
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,14 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-5">
|
||||||
|
<label for="etiquetas"> Etiquetas</label>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<legend></legend>
|
<legend></legend>
|
||||||
<div class="row justify-content-center align-items-center">
|
<div class="row justify-content-center align-items-center">
|
||||||
|
|
@ -44,3 +52,16 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
@push('styles')
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css">
|
||||||
|
@endpush
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||||
|
<script>
|
||||||
|
$('#etiquetas').select2({
|
||||||
|
placeholder:"Seleccione Etiquetas"
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endpush
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user