Ларавельский красноречивый рекорд обновления без загрузки из базы данных
Я новичок в laravel, и я пытаюсь обновить запись из ввода формы. Однако я вижу, что для обновления записи сначала нужно извлечь запись из базы данных. Невозможно что-то вроде обновить запись (установлен первичный ключ):
$post = new Post();
$post->id = 3; //already exists in database.
$post->title = "Updated title";
$post->save();
Ответы
Ответ 1
Вы можете просто использовать Query Builder, а не Eloquent, этот код непосредственно обновляет ваши данные в базе данных :) Это пример:
DB::table('post')
->where('id', 3)
->update(['title' => "Updated Title"]);
Вы можете проверить документацию здесь для получения дополнительной информации: http://laravel.com/docs/5.0/queries#updates
Ответ 2
Post::where('id',3)->update(['title'=>'Updated title']);
Ответ 3
Использовать свойство exists
:
$post = new Post();
$post->exists = true;
$post->id = 3; //already exists in database.
$post->title = "Updated title";
$post->save();
Вот документация по API: http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Model.html
Ответ 4
Вы также можете использовать firstOrCreate
OR firstOrNew
// Retrieve the Post by the attributes, or create it if it doesn't exist...
$post = Post::firstOrCreate(['id' => 3]);
// OR
// Retrieve the Post by the attributes, or instantiate a new instance...
$post = Post::firstOrNew(['id' => 3]);
// update record
$post->title = "Updated title";
$post->save();
Надеюсь, это поможет вам :)
Ответ 5
Сначала вам нужно загрузить строку для обновления:
$post = Post::find($id);
Я твой случай
$post = Post::find(3);
$post->title = "Updated title";
$post->save();