Eloquent :插入和更新

未匹配的标注

Eloquent :插入和更新

介绍

这篇文章介绍使用 Eloquent 模型向数据表进行插入或更新操作

方法

方法 说明
save() 插入或更新一条记录
create() 以批量赋值的形式插入记录
update() 以批量赋值的形式更新记录
firstOrCreate() 根据条件插入记录
firstOrNew() 根据条件插入记录
updateOrCreate 根据条件插入或更新记录

插入和更新记录

插入一条新记录

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * 创建一个新用户
     */
    public function test()
    {
        $this->username = 'learnku';
        $this->password = '******';
        // 保存
        $this->save();
    }
}

save() 方法也可以用来更新记录

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * 更新一个已存在的用户
     */
    public function test()
    {   
        // 这里需要将要更新的用户信息先查询出来
        $user = $this->find(1);
        // 然后修改
        $user->age = 18;
        // 最后更新
        $user->save();
    }
}

批量赋值

以批量赋值的形式插入一条新记录 ,批量赋值前要确保相应的属性已被允许批量赋值

<?php

namespace App\Http\Controllers;

use App\User;

class Controller extends BaseController
{
    $user = new User();
    // 插入
    $user->create([
        'username' => 'learnku',
        'password' => '******'
    ]);
    // 更新
    $user->where('id', 1)
        ->update([
            'username' => 'learnku',
            'password' => '******'
        ]);
}

根据条件插入和更新记录

firstOrCreate()firstOrNew() 会根据第一个参数在数据库中查找记录 ,如果没有找到对应记录 ,则根据参数中的属性创建一个模型实例并返回 。区别在于 ,firstOrCreate() 会自动调用模型的 save() 方法插入数据 ,而 firstOrNew() 需要手动调用模型的 save() 方法插入数据

$user = new User();
// 如果没有 username 为 learnku 的用户 ,就插入记录 ['username' => 'learnku', 'password' => '******']
$user = $user->firstOrCreate(['username' => 'learnku'], ['password' => '******']);

updateOrCreate() 如果在数据库找到对应的记录 ,会更新对应的记录 ,如果没有找到对应记录则会插入一条新记录

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~