Laravel Note
in PHP with 0 comment

Laravel Note

in PHP with 0 comment

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,冒号后可跟自定义数字表示每分钟限制次数
Responses
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif