Stack Overflow en español Asked by Jhon Piraquive on December 11, 2021
Estoy intentando realizar una asignación masiva es decir guardar un objeto con los datos ingresados desde el formulario, pero al intentar guardar me retorna un error como si no estuviera recibiendo el valor de un campo. Adjunto codigo de mi controlador, Form Request, Modelo y el error que genera lo que no entiendo es el porque no reconoce el atributo fillable.
Modelo, en este se define la tabla a la que apunta en la bd al igual que todos los campos serán fillable
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Proveedor extends Model
{
protected $table = 'proveedores';
protected $fillable = ['*'];
}
Controlador, en este defino el form request al que se hará la petición para verificar los datos una vez este finaliza retorna al controlador los datos y allí en donde retorna el error que se presenta
public function guardarProveedor(GuardarProveedorForm $request){
// dd($request->input());
$proveedor = new Proveedor();
$proveedor->save($request->input());
}
Form Request, en este reviso los datos que envío en el get y está parte va bien la adiciono por si el error pueda presentarse en este lugar
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class GuardarProveedorForm extends FormRequest
{
public function authorize()
{
if(auth()->user()->hasRole("administrador"))
return true;
return false;
}
public function rules()
{
return [
"tipo_identificacion" => "required",
"identificacion" => "required",
"nombre" => "required",
"apellidos" => "required",
"correo" => "required",
"direccion" => "required",
"ciudad" => "required",
"telefono" => "required",
"celular" => "required",
"digito_verificacion" => "required_if:tipo_identificacion,==,nit",
"titular" => "required",
"tipo_pago" => "required",
"nombre_tercero" => "required_if:titular,==,tercero",
"banco" => "required_if:tipo_pago,==,banco",
"numero_cuenta" => "required_if:tipo_pago,==,banco",
"tipo_cuenta" => "required_if:tipo_pago,==,banco",
];
}
public function messages()
{
return [
'tipo_identificacion.required' => 'El campo :attribute es obligatorio.',
'identificacion.required' => 'El campo :attribute es obligatorio',
'nombre.required' => 'El campo :attribute es obligatorio',
'apellidos.required' => 'El campo :attribute es obligatorio',
'correo.required' => 'El campo :attribute es obligatorio',
'direccion.required' => 'El campo :attribute es obligatorio',
'ciudad.required' => 'El campo :attribute es obligatorio',
'telefono.required' => 'El campo :attribute es obligatorio',
'celular.required' => 'El campo :attribute es obligatorio',
'digito_verificacion.required_if' => 'El campo :attribute es obligatorio',
'titular.required' => 'El campo :attribute es obligatorio',
'tipo_pago.required' => 'El campo :attribute es obligatorio',
'nombre_tercero.required_if' => 'El campo :attribute es obligatorio',
'banco.required_if' => 'El campo :attribute es obligatorio',
'numero_cuenta.required_if' => 'El campo :attribute es obligatorio',
'tipo_cuenta.required_if' => 'El campo :attribute es obligatorio',
];
}
}
SQLSTATE[HY000]: General error: 1364 Field ‘tipo_identificacion’ doesn’t have a default value (SQL: insert into
proveedores
(updated_at
,created_at
) values (2020-04-22 22:33:15, 2020-04-22 22:33:15))
En la asignación masiva en Laravel pide lo siguiente:
$fillable
del modelo aquellos atributos que se pueden asignart masivamentecreate
en lugar del método save
$request->all()
para recibir todos los valores y asignarlos masivamente$request->only();
y pasar dentro de un vector aquellos valores que son los únicos que se pueden asignar masivamente.Puedes proceder así:
En tu modelo
class Proveedor extends Model
{
protected $table = 'proveedores';
protected $fillable = ['atributo1', 'atributo2', ....., 'atributoN'];
}
En tu controlador:
public function guardarProveedor(GuardarProveedorForm $request)
{
// dd($request->input());
$proveedor = Proveedor::create($request->all());
}
Answered by BetaM on December 11, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP