【问题标题】:can't update data in laravel 5.2无法更新 laravel 5.2 中的数据
【发布时间】:2016-12-12 11:01:00
【问题描述】:

我有 2 个数据库: 1. 用户(姓名、用户名、密码、remember_token、admin) 2. 剂量(iddosen、user_id、namadosen、nipy 等)

我想更新数据,但是当我点击保存时它没有更新到数据库。单击保存时没有错误。

在编辑视图中我使用关系
{!! Form::model($user->dosen, ['route' => ['admin.dosen.update', $user->dosen->user_id], 'method' => 'PUT']) !!}

这是我的方法:

public function update($id)
{
    $userUpdate = Request::all();
    $user = User::find($id);
    $user->update($userUpdate);
    return redirect('admin/dosen')->with('message', 'Data berhasil diubah!');
}

编辑视图:

@extends('layouts.app')
@section('content')

<div class="container">
<div class="row">
    <div class="col-md-10 col-md-offset-1">
        <div class="panel panel-default">
            <div class="panel-heading">Edit {{ $user->dosen->namadosen }}</div>

            <div class="panel-body">
                <!-- jika terjadi error, akan menampilkan pesan -->
                        @if ($errors->any())
                            <ul class="alert alert-danger">
                            @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                            @endforeach
                            </ul>
                        @endif

                        {!! Form::model($user->dosen, ['route' => ['admin.dosen.update', $user->dosen->user_id], 'method' => 'PUT']) !!}

                            <div class="form-group">
                                {!! Form::label('iddosen', 'Kode Dosen') !!}
                                {!! Form::text('iddosen', null, ['class' => 'form-control', 'readonly' => 'true']) !!}
                            </div>

                            <div class="form-group">
                                {!! Form::label('nipy', 'NIPY') !!}<br>
                                {!! Form::text('nipy', null, ['class' => 'form-control']) !!}
                            </div>

                            <div class="form-group">
                                {!! Form::label('namadosen', 'Nama Dosen') !!}
                                {!! Form::text('namadosen', null, ['class' => 'form-control']) !!}
                            </div>

                            <div class="form-group">
                                {!! Form::label('alamatdosen', 'Alamat') !!}
                                {!! Form::textarea('alamatdosen', null, ['class' => 'form-control']) !!}
                            </div>

                             <div class="form-group">
                                {!! Form::label('notelpdosen', 'No HP Dosen') !!}
                                {!! Form::text('notelpdosen', null, ['class' => 'form-control']) !!}
                            </div>

                             <div class="form-group">
                                {!! Form::label('tempatlahirdosen', 'Tempat & Tanggal Lahir') !!}
                                <div class="form-inline">
                                {!! Form::text('tempatlahirdosen', null, ['class' => 'form-control']) !!}
                                {!! Form::text('tanggallahirdosen', null, ['class' => 'form-control']) !!}
                            </div>
                            </div>



                            {{ Form::button('<i class="fa fa-check-square-o"></i> Simpan', ['type' => 'submit', 'class' => 'btn btn-primary'] )  }}
                            <a class="btn btn-small btn-success" href="{{ URL('dosen/') }}"><i class="fa fa-reply"></i> Kembali</a>

                        {!! Form::close() !!}

                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</div>
@endsection

【问题讨论】:

  • 你能展示你的用户模型吗?
  • @jaysingkar 用户模型:public function dosen() { return $this-&gt;hasOne('App\Dosen'); } 剂量模型:public function user() { return $this-&gt;belongsTo('App\User'); }
  • 用户 tbale 的主键是什么? id。对吗?
  • @jaysingkar 是的“id”。剂量的主键是“iddosen”
  • 我认为您在方法而不是用户中获取剂量数据。您能否确认Request::all() 是否有您要更新的列?

标签: php laravel-5.2


【解决方案1】:

从表单看来,您想要更新 dosen 表,而不是 user 表。你必须明确地这样做。 $user-&gt;update() 只会更新您的 name, username, password 字段。

所以宁愿返回关系然后更新它。

public function update($id)
{
    $dosenUpdate = Request::all();
    $user = User::find($id);
    $user->dosen()->update($dosenUpdate);
    return redirect('admin/dosen')->with('message', 'Data berhasil diubah!');
}

【讨论】:

  • 遇到错误SQLSTATE[42S22]: Column not found: 1054 Unknown column '_method' in 'field list' (SQL: update dosen`组_method = PUT,_token = QWFo70aZUrny3RyPJRQyBJiLUGyWxtqjpdVxTaZj,iddosen = DSN003,nipy = 31351.1351.13,namadosen =迪马斯Sasongko,S .Kom,alamatdosen = Surakartaaaaaa,notelpdosen = 856245242,tempatlahirdosen = 独奏,tanggallahirdosen = 1985-04-20,updated_at = 2016-08-06 16:04:32 其中@987654.3 user_id = 74 和 dosen.user_id 不为空)`
  • $dosenUpdate = $request-&gt;all(); 更改为仅包含您需要的表中的字段,例如$dosenUpdate = $request-&gt;only(['nipy', 'namadosen', 'alamatdosen']);
  • 谢谢它的工作。更新:$dosenUpdate = Request::only(['nipy', 'namadosen', 'alamatdosen']);
  • 很好,如果答案解决了您的问题,欢迎您选择它作为答案。
【解决方案2】:

您似乎缺少用户表中的updated_at 列。 因此,让我们尝试添加具有“DATETIME”数据类型的updated_at 列并再次测试。

您还应该检查应用程序错误日志文件中的消息。它通常在您的虚拟主机中配置,或者是 Apache 的默认错误日志文件。

除此之外,您应该检查您是否已经在 config/app.php 中启用了调试模式以查看错误消息。

'debug' => env('APP_DEBUG', true),

如果是这样,错误消息将存储在 storage/logs/laravel.log 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2016-06-04
    • 2019-01-16
    • 2016-05-22
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多