Laravel Note
5.1 基础
queryScope 和 getAttribute 和 setAttribute 用法
// 对表单数据入库前预处理
// 处理时间等字段
class Article {
...
/*
* setAttribute
* 当我们尝试在模型上设置 published_at 的值时,将会自动调用此修改器
* 对 Article 表中的 Published 字段进行预处理
* 传入的 $date 格式为 Y-m-d, 通过 Carbon 的 createFromFormat 函数将该格式的时间转换为 Carbon 对象。
*/
public function setPublishedAtAttribute ($date) {
$this->arrtibutes['published_at'] = Carbon::createFromFormat('Y-m-d', $date);
}
/*
* getAttribute
* 当 Eloquent 尝试获取 first_name 的值时,将会自动调用此访问器
*
* 获取用户的名字。
* @param string $value
* @return string
*/
public function getFirstNameAttribute ($value) {
return ucfirst($value);
}
/*
* queryScope
* 我的理解:自定义函数,将具体的操作(例如 where 条件)抽象到模型类中
* 调用此方法:
* //ex: $articles = Article::latest()->published()->get();
* scope后跟自定义方法名,驼峰法命名
*/
public function scopePublished ($query) {
$query->where('published_at', '<=', Carbon::now());
}
}
属性类型转换
Laravel-docs - 属性类型转换
$casts 属性在模型中提供了将属性转换为常见的数据类型的方法。$casts 属性应是一个数组,而键是那些需要被转换的属性名称,而值则是代表字段要转换的类型。支持的转换的类型有:
- integer
- real
- float
- double
- string
- boolean
- object
- array
- collection
- date
- datetime
例如,is_admin 属性以整数(0 或 1)被保存在我们的数据库中,让我们来把它转换为布尔值:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * 应该被转换成原生类型的属性。 * * @var array */ protected $casts = [ 'is_admin' => 'boolean', ]; }
5.2 新特性
路由模型绑定
Route::get('/user/{user}', function('\App\User', $user) {
return $user;
});
/*
return Json data of this user with Model => \App\User
*/
访问次数限制
// 默认每分钟 60 次请求次数限制
// X-Ratelimit-Limit : 60
// X-Ratelimit-Remaining : 58
Route::get(/*SomeRoutes*/)->middleware('throttle:60');
// 默认为 60,冒号后可跟自定义数字表示每分钟限制次数
本文由 root 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Dec 27, 2019 at 04:00 pm