Laravel Eloquent(Model)的妙用-铁岭百姓网招聘
用户投稿
•
•
阅读 98
铁岭百姓网招聘-Laravel 的Eloquent提供了非常强大的 功能
其中包括 getter setter 魔术方法
可以利用这两个方法实现一些妙用
1、虚拟属性
用户资料表中,通常会以int存储性别,例如:gender字段1-男,2-女,3-未知
在客户端(App或者网页)中,会需要显示中文文字或者其他语言的文字,在每个输出的地方重复一下代码不合适,在UserProfileModel类里面可以使用虚拟属性。
const GENDERS = [1=>'男', 2=>'女', 3=>'未知'];
public function getGenderTextAttribute()
{
return static::GENDERS[$this->gender] ?? '';
}
通过访问$model->gender_text 或者 $model->genderText 这两个属性,会隐式调用方法getGenderTextAttribute()。
$model->toArray()方法会将数据库所有字段变为数组(对象数组),默认情况下,不会调用getGenderTextAttribute()方法,可以使用Model内置的$appends 来将genderText在toArray()时候一起输出。
protected $appends = [..., "genderText"]
定义方法名时,建议不要覆盖现有的字段名字,业务代码可能需要原始值做逻辑判断
2、数据自动序列化
在MySQL中,并没有一种直白的类型,能够保存多变PHP数组或者PHP对象,通常情况下,都是进行json化或者序列化,下面介绍一下全自动序列化过程:
// UserProfileModel.php 数据库字段extra 为 varchar(255)
public function getExtraAttribute()
{
return json_decode($this->attributes['extra'] ?? '[]', true);
}
public function setExtraAttribute($v)
{
$this->attributes['extra'] = json_encode($v);
}
// 业务中使用方法
$model->extra = ["乱七八糟的数组" : ["abc" : "adfasdf"]];
$model->save();
var_dump($model->extra);
// 输出一个数组
未完待续…
随机文章
SEO教程站长导航
友情链接交换
搜素引擎算法
GEO培训
SEO小小课堂网
站长导航
友情链接交换
百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/50186.html

微信扫一扫
支付宝扫一扫