2016-08-05 3 views
1

У меня есть две базы данных: 1. пользователей (имя, имя пользователя, пароль, remember_token, администратора) 2. Dosen (iddosen, user_id, namadosen, nipy и т.д.)не может обновить данные в Laravel 5,2

Я хочу обновлять данные, но когда я нажимаю «Сохранить», он не обновляется в базе данных. нет ошибки, когда я нажимаю save.

in редактирование вид я использую связь
{!! Форма :: модель ($ 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 
+0

Вы можете показать свою Модель пользователя? – jaysingkar

+0

@jaysingkar Пользовательская модель: 'public function dosen() { return $ this-> hasOne ('App \ Dosen'); } ' dosen model:' public function user() { { return $ this-> принадлежит Too ('App \ User'); } ' – Ezra

+0

Что такое первичный ключ для пользователя tbale? 'Id'. правильно ? – jaysingkar

ответ

2

От формы похоже, что вы хотите обновить таблицу dosen, а не user. Вы должны явно это сделать. $user->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!'); 
} 
+0

получил ошибку 'SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец '_method' в 'списке полей' (SQL: обновление' dosen' set '_method' = PUT,' _token' = QWFo70aZUrny3RyPJRQyBJiLUGyWxtqjpdVxTaZj, 'iddosen' = DSN003, 'nipy' = 31351.1351.13,' namadosen' = Dimas Sasongko, S.Kom, 'alamatdosen' = Surakartaaaaaa,' notelpdosen' = 856245242, 'tempatlahirdosen' = Solo,' tanggallahirdosen' = 1985-04-20, 'updated_at' = 2016-08-06 16:04:32 где 'dosen'.'user_id' = 74 и' dosen'.'user_id' не равно нулю) ' – Ezra

+1

Измените' $ dosenUpdate = $ request-> all(); 'на укажите только поля в требуемой таблице, например '$ dosenUpdate = $ request-> (['nipy', 'namadosen', 'alamatdosen']);'. –

+0

Спасибо, что работает.update: '$ dosenUpdate = Request :: only (['nipy', 'namadosen', 'alamatdosen']);' – Ezra

0

похоже, вам не хватает updated_at столбец в таблице пользователей. Итак, попробуйте добавить столбец updated_at с типом данных DATETIME и протестировать его снова.

Вы также должны проверять сообщения в файле журнала ошибок вашего приложения. Он обычно настраивается на вашем виртуальном хосте или является файлом журнала ошибок Apache по умолчанию.

Кроме того, вы должны проверить, включен ли режим debug в config/app.php, чтобы просмотреть сообщения об ошибках.

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

Если это так, сообщения об ошибках будут храниться в хранилищах/журналах/laravel.log.

Смежные вопросы