国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

laravel學(xué)習(xí)教程之存取器

2020-03-22 18:29:07
字體:
供稿:網(wǎng)友
前言Laravel是一個簡單優(yōu)雅的PHP Web開發(fā)框架,可以將開發(fā)者從意大利面條式的代碼中解放出來,通過簡單、高雅、表達式語法開發(fā)出很棒的Web應(yīng)用,那下面跟著小編一起來學(xué)習(xí)laravel中的存取器吧。Eloquent: 存取器簡介訪問器和存儲器允許你在獲取或者設(shè)置 Eloquent 模型屬性值時對其進行格式化操作。比如,你可能希望當(dāng)一個值存儲進數(shù)據(jù)庫之前先對其進行 Laravel encrypter 進行加密操作,并且可以在你通過模型訪問的時候自動的進行該屬性的解密。除了可自定義的的訪問器和存儲器,Eloquent 也可以自動的將日期字段轉(zhuǎn)換為 Carbon 實例,或者甚至是將字符串字段轉(zhuǎn)換為 JSON。訪問器 & 存取器
定義一個訪問器為了定義一個訪問器,你需要在你的模型上創(chuàng)建一個 getFooAttribute 方法,其中的 Foo 是你需要進行訪問的列名的駝峰方式的命名。在這個例子中,我們將定義一個 first_name 屬性的訪問器。這個訪問器會在 Eloquent 嘗試獲取 first_name 屬性值時觸發(fā):namespace App;use Illuminate/Database/Eloquent/Model;html' target='_blank'>class User extends Model * Get the user's first name. * @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 是你期望訪問的列的駝峰樣式的名稱。那么,這一次,讓我們?yōu)?first_name 屬性定義一個存儲器。這個存儲器會在模型嘗試設(shè)置 first_name 屬性的值時進行調(diào)用:namespace App;use Illuminate/Database/Eloquent/Model;class User extends Model * Set the user's first name. * @param string $value * @return string public function setFirstNameAttribute($value) $this- attributes['first_name'] = strtolower($value);}存儲器會接收即將設(shè)置到屬性中的值,這允許你對這個值進行操作,并將其設(shè)置到模型內(nèi)部的 $attributes 屬性中。所以,舉個示例,如果我們嘗試將 first_name 屬性設(shè)置為 Sally:$user = App/User::find(1);$user- first_name = 'Sally';
在這個例子中,setFirstNameAttribute 方法會被調(diào)用并伴隨 Sally 值。存儲器會應(yīng)用 strtolower 方法將名字小寫化然后將值設(shè)置到內(nèi)部的 $attributes 數(shù)組中。日期存取器
默認(rèn)的,Eloquent 會轉(zhuǎn)換 created_at 和 updated_at 列為 Carbon 實例,這個實例可以提供多種有用的方法,并且它繼承自原生 PHP 的 DataTime 類。你可以自定義哪些字段可以進行自動的轉(zhuǎn)換,甚至是完全禁用這種轉(zhuǎn)換,你需要在你的模型中復(fù)寫 $dates 屬性:namespace App;use Illuminate/Database/Eloquent/Model;class User extends Model * The attributes that should be mutated to dates * @var array protected $dates = ['created_at', 'updated_at', 'deleted_at'];}當(dāng)一列被認(rèn)為是日期時,你可以將其設(shè)置為 UNIX 時間戳,日期字符串(Y-m-d),時間字符串,和 DateTime / Carbon 實例,并且日期的值會自動的正確的存儲到數(shù)據(jù)庫中:$user = App/User::find(1);$user- deleted_at = Carbon::now();$user- save();就如上面所述,當(dāng)獲取的屬性是 $dates 屬性所列出的值之一時,它會自動的被轉(zhuǎn)換為 Carbon 實例,這允許你在屬性上使用 Carbon 的一些方法:$user = App/User::find(1);return $user- deleted_at- getTimestamp();
默認(rèn)的,時間戳被格式化為 Y-m-d H:i:s 的格式。如果你希望自定義時間戳的格式,你需要在你的模型中設(shè)置 $dateFormat 屬性。該屬性將確定日期屬性將如何存儲到數(shù)據(jù)庫中以及當(dāng)模型進行序列化或者 JSON 化時如何展示:namespace App;use Illuminate/Database/Eloquent/Model;class Flight extends Model * The storage format of the model's date columns. * @var string protected $dateFormat = 'U';}屬性轉(zhuǎn)換
你可以在你的模型中定義 $casts 屬性來提供一種方便的方式將屬性轉(zhuǎn)換為通用的數(shù)據(jù)類型。$casts 屬性應(yīng)該是一個數(shù)組,并且其每一項的鍵應(yīng)該是需要進行轉(zhuǎn)換的屬性名,而其鍵所對應(yīng)的值應(yīng)該是你需要屬性轉(zhuǎn)換到的類型。支持的轉(zhuǎn)換類型有:integer,real,float,double,string,boolean,object,array,coolection,date,datetime,和 timestamp。比如,讓我們轉(zhuǎn)換 is_admin 屬性,它在數(shù)據(jù)庫中存儲的值為一個整型(0 或者 1),我們將其轉(zhuǎn)換為布爾值:namespace App;use Illuminate/Database/Eloquent/Model;class User extends Model * The attributes that should be casted to native types. * @var array protected $casts = [ 'is_admin' = 'boolean',}現(xiàn)在,每當(dāng)你訪問 is_admin 屬性時,其值都會被轉(zhuǎn)換為布爾值,即使其在數(shù)據(jù)庫中存儲的整型值:$user = App/User::find(1);if ($user- is_admin) {}數(shù)組轉(zhuǎn)換array 轉(zhuǎn)換的類型對于存儲序列化 JSON 值的列尤其有用。比如,如果數(shù)據(jù)庫有一個 TEXT 類型的字段,并且其存儲的是序列化的 JSON,如果你添加該屬性的 array 轉(zhuǎn)換,那么當(dāng)你在 Eloquent 模型上訪問這個屬性時,它將會自動的進行反序列化為 PHP 的數(shù)組:namespace App;use Illuminate/Database/Eloquent/Model;class User extends Model * The attributes that should be casted to native types. * @var array protected $casts = [ 'options' = 'array'}當(dāng)你轉(zhuǎn)義定義完成之后,你可以訪問 options 屬性,并且它會自動的被從 JSON 反序列化為 PHP 數(shù)組。當(dāng)你設(shè)置值到 options 屬性時,所給定的數(shù)組會自動的序列化為 JSON 格式,然后進行存儲:$user = App/User::find(1);$options = $user- options;$options['key'] = 'value';$user- options = $options;$user- save();以上就是小編為大家整理的laravel學(xué)習(xí)教程之存取器的全部內(nèi)容,有需要的小伙伴們可以參考學(xué)習(xí),小編陸續(xù)還會更新laravel相關(guān)的知識,請大家繼續(xù)關(guān)注phpstudy。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长汀县| 丰顺县| 宜兰县| 叶城县| 靖宇县| 泊头市| 襄垣县| 年辖:市辖区| 南汇区| 日喀则市| 东丰县| 方山县| 宿迁市| 西乌珠穆沁旗| 驻马店市| 临洮县| 金溪县| 高淳县| 麻栗坡县| 京山县| 凤翔县| 如皋市| 新泰市| 安吉县| 黄陵县| 印江| 宁德市| 临泉县| 苍南县| 阿拉善盟| 修武县| 远安县| 滨州市| 安平县| 隆化县| 宜宾县| 三都| 三都| 宜川县| 罗江县| 靖西县|