#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 и исправление ссылок в моем коде, похоже, решило проблему.