是否从空值创建默认对象



管理员控制器

public function edit_portal_sub(Request $request)
{
$portal=Oex_portal::where('id',$request->id)->get()->first();
$portal->name=$request->name;
$portal->email=$request->email;
$portal->mobile_no=$request->mobile_no;
if($request->password!='')
$portal->password=$request->password;
$portal->update();
echo json_encode(array('status'=>'true','message'=>'Portal Successfully Updated','reload'=>url('admin/manage_portal')));
}

web.php(路由(

Route::post('/admin/edit_portal_sub','Admin@edit_portal_sub');

edit_portal.blade(表单(

@extends('layouts.app')
@section('title','Edit Portal')
@section('content')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark">Edit Portal</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active">Edit Portal</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<!-- Default box -->
<div class="card">
<div class="card-body">
<form action="{{ url('admin/edit_portal_sub') }} " class="database_operation">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label>Enter Name</label>
{{ csrf_field() }}
<input type="hidden" name="id" value="{{ $portal_info->email }}">
<input type="text" value="{{ $portal_info->name }}" name="name" required="required" placeholder="Enter Name" class="form-control">
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<label>Enter Email</label>
<input type="text" value="{{ $portal_info->email }}" name="email" required="required" placeholder="Enter Email" class="form-control">
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<label>Enter Mobile No</label>
<input type="text" value="{{ $portal_info->mobile_no }}" name="mobile_no" required="required" placeholder="Enter Mobile No" class="form-control">
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<label>Enter Password</label>
<input type="password" name="password"  placeholder="Enter Password" class="form-control">
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<button class="btn btn-primary"> Update</button>
</div>
</div>
</div>
</form>
</div>
<!-- /.card-body -->
<!-- /.card-footer-->
</div>
<!-- /.card -->
</div>
</div>
</div>
</section>
</div>
@endsection

当我更新数据时,我面临错误错误

message: "Creating default object from empty value"
trace: [{file: "C:xampphtdocsprojectonline_exm_sysappHttpControllersAdmin.php", line: 243,…},…]
0: {file: "C:xampphtdocsprojectonline_exm_sysappHttpControllersAdmin.php", line: 243,…}
1: {function: "edit_portal_sub", class: "AppHttpControllersAdmin", type: "->"}

当我更新数据并检查页面时,我显示错误,我不知道如何解决它…plz帮助我是新的laravel用户。。。它的最佳解决方案是什么?我为这个错误滞留了两天。。我尝试了所有可能的解决方案

我不确定,但您可以替换这两行:

$portal=Oex_portal::where('id',$request->id)->get()->first();
$portal->update();

$portal=Oex_portal::find($request->id); //you can use findorfail as well
$portal->save();

此外,您在视图中提供的是电子邮件而不是id:

<input type="hidden" name="id" value="{{ $portal_info->email }}">

您在模型上使用update方法,而不向其传递任何数据。当您使用$portal->name = "test";直接修改模型属性时,您需要在使用更新时使用保存方法$portal->save();

$portal = Oex_portal::where('id', $request->id)->get()->first();
if ($portal) {
$data = [
'name' => $request->name,
'email' => $request->email,
'mobile_no' => $request->mobile_no,
];
if ($request->password != '') {
$data['password'] = $request->password;
}
$portal->update($data);
}

以上操作将导致批量分配异常,而不会将它们添加到模型中的可填充字段中。你最好保留你所拥有的,只需要保存而不是更新。

附言:你的模特名字有下划线是什么?为什么不OexPortal

最新更新