<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ### **1、簡介** [訪問器](http://laravelacademy.org/tags/%e8%ae%bf%e9%97%ae%e5%99%a8 "View all posts in 訪問器")和[修改器](http://laravelacademy.org/tags/%e4%bf%ae%e6%94%b9%e5%99%a8 "View all posts in 修改器")允許你在獲取模型屬性或設置其值時格式化?[Eloquent](http://laravelacademy.org/tags/eloquent "View all posts in Eloquent")?屬性。例如,你可能想要使用[Laravel加密器](http://laravelacademy.org/post/189.html)對存儲在數據庫中的數據進行加密,并且在 Eloquent 模型中訪問時自動進行解密。 除了自定義訪問器和修改器,Eloquent 還可以自動轉換[日期](http://laravelacademy.org/tags/%e6%97%a5%e6%9c%9f "View all posts in 日期")字段為[Carbon](http://laravelacademy.org/tags/carbon "View all posts in Carbon")實例甚至將文本轉換為[JSON](http://laravelacademy.org/tags/json "View all posts in JSON")。 ### **2、訪問器 & 修改器** #### **定義訪問器** 要定義一個訪問器,需要在模型中創建一個`getFooAttribute`方法,其中`Foo`是你想要訪問的字段名(使用駝峰式命名規則)。在本例中,我們將會為`first_name`屬性定義一個訪問器,該訪問器在獲取`first_name`的值時被 Eloquent 自動調用: ~~~ <?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model{ /** * 獲取用戶的名字 * * @param string $value * @return string */ public function getFirstNameAttribute($value) { return ucfirst($value); } } ~~~ 正如你所看到的,該字段的原生值被傳遞給訪問器,然后返回處理過的值。要訪問該值只需要簡單訪問`first_name`即可: ~~~ $user = App\User::find(1); $firstName = $user->first_name; ~~~ #### **定義修改器** 要定義一個修改器,需要在模型中定義`setFooAttribute`方法,其中`Foo`是你想要訪問的字段(使用駝峰式命名規則)。接下來讓我們為`first_name`屬性定義一個修改器,當我們為模型上的`first_name`賦值時該修改器會被自動調用: ~~~ <?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model{ /** * 設置用戶的名字 * * @param string $value * @return string */ public function setFirstNameAttribute($value) { $this->attributes['first_name'] = strtolower($value); } } ~~~ 該修改器獲取要被設置的屬性值,允許你操縱該值并設置 Eloquent 模型內部屬性值為操作后的值。例如,如果你嘗試設置`Sally`的`first_name`屬性: ~~~ $user = App\User::find(1); $user->first_name = 'Sally'; ~~~ 在本例中,`setFirstNameAttribute`方法會被調用,傳入參數為`Sally`,修改器會對其調用`strtolower`函數并將處理后的值設置為內部屬性的值。 ### **3、日期修改器** 默認情況下,Eloquent 將會轉化`created_at`和`updated_at`列的值為 Carbon 實例,該類繼承自 PHP 原生的`Datetime`類,并提供了各種有用的方法。 你可以自定義哪些字段被自動調整修改,甚至可以通過重寫模型中的`$dates`屬性完全禁止調整: ~~~ <?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model{ /** * 應該被調整為日期的屬性 * * @var array */ protected $dates = ['created_at', 'updated_at', 'disabled_at']; } ~~~ 如果字段是日期格式時,你可以將其值設置為 UNIX 時間戳,日期字符串(`Y-m-d`),日期-時間字符串,`Datetime/Carbon`實例,日期的值將會自動以正確格式存儲到數據庫中: ~~~ $user = App\User::find(1); $user->disabled_at = Carbon::now(); $user->save(); ~~~ 正如上面提到的,當獲取被羅列在`$dates`[數組](http://laravelacademy.org/tags/%e6%95%b0%e7%bb%84 "View all posts in 數組")中的屬性時,它們會被自動轉化為`Carbon`實例,允許你在屬性上使用任何`Carbon`的方法: ~~~ $user?=?App\User::find(1); return?$user->disabled_at->getTimestamp(); ~~~ 默認情況下,時間戳的格式是“Y-m-d H:i:s”,如果你需要自定義時間戳格式,在模型中設置`$dateFormat`屬性,該屬性決定日期屬性存儲在數據庫以及序列化為數組或 JSON 時的格式: ~~~ <?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model{ /** * 模型日期的存儲格式 * * @var string */ protected $dateFormat = 'U'; } ~~~ ### **4、屬性轉換** 模型中的`$casts`屬性為屬性字段轉換到通用數據類型提供了便利方法 。`$casts`屬性是數組格式,其鍵是要被轉換的屬性名稱,其值時你想要轉換的類型。目前支持的轉換類型包括:`integer`,?`real`,?`float`,?`double`,?`string`,?`boolean`,?`object`,`array`,`collection`,`date`和`datetime`。 例如,讓我們轉換`is_admin`屬性,將其由`integer`類型(0或1)轉換為`boolean`類型: ~~~ <?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model{ /** * 應該被轉化為原生類型的屬性 * * @var array */ protected $casts = [ 'is_admin' => 'boolean', ]; } ~~~ 現在,`is_admin`屬性在被訪問時總是被轉換為`boolean`,即使底層存儲在數據庫中的值是`integer`: ~~~ $user = App\User::find(1); if ($user->is_admin) { // } ~~~ #### **數組轉換** `array`類型轉換在處理被存儲為序列化 JSON 格式的字段時特別有用,例如,如果數據庫有一個 TEXT 字段類型包含了序列化JSON,添加`array`類型轉換到該屬性將會在 Eloquent 模型中訪問其值時自動將其反序列化為 PHP 數組: ~~~ <?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model{ /** * 應該被轉化為原生類型的屬性 * * @var array */ protected $casts = [ 'options' => 'array', ]; } ~~~ 類型轉換被定義后,訪問`options`屬性將會自動從 JSON 反序列化為 PHP 數組,反之,當你設置`options`屬性的值時,給定數組將會自動轉化為 JSON 以供存儲: ~~~ $user?=?App\User::find(1); $options?=?$user->options; $options['key']?=?'value'; $user->options?=?$options; $user->save(); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看