Laravel не сохраняется в базе данных

#php #database #laravel-5 #insert-update

#php #База данных #laravel-5 #вставить-обновить

Вопрос:

По какой-то причине я не могу сохранить в базе данных. Ошибок нет, просто ничего не обновляется. Я знаю, что команды работают правильно, потому что возврат $user впоследствии дает мне соответствующие измененные поля. Но где-то информация не попадает в базу данных.

Блейд можно найти здесь:http://pastebin.com/8bAEsjtj Форму запроса можно найти здесь:http://pastebin.com/ZCD1Xvjn

Это контроллер:

 <?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use AppHttpRequestsUserFormRequest;
use AppUserEdit;
use DB;
use AppHttpRequests;

class EditUserController extends Controller
{
    public function index()
    {
        $array = UserEdit::all()->toArray();
        return view('UserEntry', compact('array'));
    }

    public function create()
    {
        //
    }

    public function store()
    {
      //
    }

    public function show($ID)
    {
        try {
         $array = UserEdit::findorFail($ID)->toArray();
         return view('UserEdit')->with('array', $array);

         } catch(Exception $e) {
             return Redirect::route('users.index')
                ->withMessage('This user does not exist');
         }

    }

    public function edit(UserEdit $user)
    {

        return view('EditUser', compact('user'));
    }

     public function update(UserFormRequest $request, UserEdit $user)
{
   //$input->$request->all();
   //$user->fill(Input::all());

   $user->fill([
       'name' => $request->get('name'),
       'email' => $request->get('email'),
       'First_Name' => $request->get('First_Name'),
       'Last_Name' => $request->get('Last_Name')
  ]);
  //$user->name = Input::get('name');
  //$user->email = Input::get('email');
  //$user->First_Name = Input::get('First_Name');
  //$user->Last_Name = Input::get('Last_Name');
  $user->save();
  //$user->save();
  // return redirect()->route('users.index')->with('message', 'Details Updated!');
   return $user;
}

    public function destroy($id)
    {
        //
    }
}
  

Уверен, что это все выше всяких похвал, так почему бы этому не сработать? Я где-то упускаю какую-то деталь? Это модель:http://pastebin.com/vJBzfUVu

Комментарии:

1. Попробуйте сохранить модель после заполнения `$user->save()’

2. По какой-то причине $user->save(); не обновляет базу данных. Изменил первое сообщение, чтобы отразить изменения.

3. Что такое UserEdit ? Не могли бы вы просто включить update функцию в свою User модель?

4. UserEdit — это модель. Извините, я еще не разобрался с соглашениями об именовании.

5. может быть, попробуйте $user->update([...]) вместо этого, также убедитесь, что метод маршрута — patch или put

Ответ №1:

ОК. Нашел ответ, есть разница между тем, как mysql и php обрабатывают ‘id’ в таблице базы данных.

В этом случае, поскольку я унаследовал базу данных от других разработчиков, столбец id был заглавным.

Вероятно, из-за этого php laravel генерирует ошибку, поскольку он искал ‘id’ и ничего не нашел.

Я не заметил этого, потому что на самом деле эта ошибка не выводилась, а другой мой код учитывал капитализацию.

Изменение идентификатора на id и исправление ссылок в моем коде, похоже, решило проблему.