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()
如果在数据库找到对应的记录 ,会更新对应的记录 ,如果没有找到对应记录则会插入一条新记录