日期:2017-03-01 阅读:1588
dmandwp系统 - wordpress系统和DM系统区块建站>>
https://laravel-china.org/docs/5.4/eloquent
1 Eloquent 模型约定
数据表名称
protected $table = 'my_flights'; //没有,则用复数。
时间戳
Eloquent 会认为在你的数据库表有 created_at 和 updated_at 字段。
如果你不希望让 Eloquent 来自动维护这两个字段,可在模型内将 $timestamps 属性设置为 false:
public $timestamps = false;
=======================================================
2 取回多个模型
可把每个 Eloquent 模型想像成强大的 查询构造器 - https://laravel-china.org/docs/5.4/queries
用法: all
<?php
use App\Flight;
$flights = App\Flight::all();
foreach ($flights as $flight) {
echo $flight->name;
}
-----------
增加额外的限制
$flights = App\Flight::where('active', 1)
->orderBy('name', 'desc')
->take(10)
->get();
----------
约定:
由于 Eloquent 模型是查询构造器,因此你应当去阅读所有 查询构造器 中可用的方法。
你可在 Eloquent 查询中使用这其中的任何方法。
https://laravel-china.org/docs/5.4/queries
-------------
集合
https://laravel-china.org/docs/5.4/eloquent-collections#available-methods
集合方法的详解:
https://laravel-china.org/docs/5.4/collections
$flights = $flights->reject(function ($flight) {
return $flight->cancelled; // $flight->cancelled是一个布尔值。如果为true,则reject。与之相反的是filter
});
https://laravel-china.org/docs/5.4/collections#method-reject
然后再遍历数组:
foreach ($flights as $flight) {
echo $flight->name;
}
------------
分块结果
如果你需要处理数以千计的 Eloquent 查找结果,则可以使用 chunk 命令
---- 不讲,不适合入门。
====================
3 取回单个模型/集合#
可以通过 find 和 first 方法来取回单条记录
// 通过主键取回一个模型...
$flight = App\Flight::find(1);
// 取回符合查询限制的第一个模型 ...
$flight = App\Flight::where('active', 1)->first();
你也可以用主键的集合为参数调用find方法,它将返回符合条件的集合:
$flights = App\Flight::find([1, 2, 3]);
----------
「未找到」异常#
有时候你可能希望在找不到模型时抛出一个异常,这在路由或是控制器内特别有用。
findOrFail 以及 firstOrFail 方法
==================
4 添加和更新模型#
基本添加#
要在数据库中创建一条新记录,只需创建一个新模型实例,
并在模型上设置属性和调用 save 方法即可:
当 save 方法被调用时,created_at 以及 updated_at 时间戳将会被自动设置,因此我们不需要去手动设置它们
public function store(Request $request)
{
// 验证请求...
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
}
-------------------
基本更新#
save 方法也可以用于更新数据库中已经存在的模型
$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();
-----------------
批量更新
update 方法会期望收到一个含有字段与值对应的数组,而这些字段的内容将会被更新。
当通过“Eloquent”批量更新时,saved和updated模型事件将不会被更新后的模型代替。这是因为批量更新时,模型从来没有被取回。
--------------------
批量赋值#
你也可以使用 create 方法通过一行代码来保存一个新模型
不过,在这样做之前,你需要先在你的模型上定义一个 fillable 或 guarded 属性
---------
protected $fillable = ['name']; //fillable 表示 可以被批量赋值 ,就好比白名单
protected $guarded = ['price']; //guarded是用来保护的,就是不让赋值。 就好比黑名单
如果你想让所有的属性都可以被批量赋值,你应该定义 $guarded为空数组。
protected $guarded = [];
-------------
一旦我们已经设置好可以被批量赋值的属性,便能通过 create 方法来添加一条新记录到数据库。create 方法将返回已经被保存的模型实例:
$flight = App\Flight::create(['name' => 'Flight 10']);
-------------------
5 删除模型#
要删除模型,必须在模型实例上调用 delete 方法:
$flight = App\Flight::find(1);
$flight->delete();
------------