要在数据库中创建新记录,只需创建一个新的模型实例,并在模型上设置属性,然后调用 save 方法:
<?php
namespace App\Http\Controllers;
use App\Flight;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class FlightController extends Controller
{
/**
* 创建一个新的航班实例。
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// 验证请求...
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
}
}
当我们调用 save 方法时,就会添加一条记录到数据库中。created_at 以及 updated_at 时间戳将在 save 方法被调用时会被自动设置,因此我们不需要去手动设置它们。
用 save 方法。同样的,updated_at 时间戳将会被自动更新,所以我们不需要手动设置它的值:
$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();
save 方法也可以用来更新数据库中已经存在的模型。要更新模型,则须先检索模型,再设置要更新的属性,然后再调用 save 方法。同样的,updated_at 时间戳将会被自动更新,所以我们不需要手动设置它的值:
$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();
update 方法需要传入表示要更新的字段的字段的值的键值对数组。
通过 Eloquent 执行批量更新时,saved 和 updated 的模型事件不会被更新的模型触发。这是因为执行批量更新时,不会有任何模型被检索出来。
你也可以使用 create 方法来保存新模型,然后被插入数据库的模型实例会从方法返回。不过,在这之前,你需要先在你的模型上指定 fillable 或 guarded 的属性,因为所有的 Eloquent 模型在默认情况下都不能进行批量赋值。
$flight = App\Flight::create(['name' => 'Flight 10']);