Laravel雄辩更新记录,无需从数据库加载

时间:2015-04-12 20:58:08

标签: php eloquent laravel-5

我对laravel很新,我正在尝试从表单的输入更新记录。但是我看到要更新记录,首先需要从数据库中获取记录。 是不可能更新记录(设置主键):

$post = new Post();
$post->id = 3; //already exists in database.
$post->title = "Updated title";
$post->save();

5 个答案:

答案 0 :(得分:51)

Post::where('id',3)->update(['title'=>'Updated title']);

答案 1 :(得分:27)

您可以简单地使用查询生成器而不是Eloquent,此代码直接更新数据库中的数据:)这是一个示例:

DB::table('post')
            ->where('id', 3)
            ->update(['title' => "Updated Title"]);

您可以在此处查看文档以获取更多信息:http://laravel.com/docs/5.0/queries#updates

答案 2 :(得分:18)

使用属性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

答案 3 :(得分:3)

您还可以使用firstOrCreatefirstOrNew

// 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();

希望它会对你有所帮助:)。

答案 4 :(得分:0)

首先,您需要加载要更新的行:

$post = Post::find($id);

我的情况

$post = Post::find(3);
$post->title = "Updated title";
$post->save();