laravel ORM 的setAttributes 与 getAttributes
来源:互联网 发布:.top域名为什么便宜 编辑:程序博客网 时间:2024/06/07 00:51
参考 laravel 例子
访问器&修改器
有时候,需要添加数据库中没有相应的字段到数组中,要实现这个,首先要定义一个访问器 ; 定义好访问器后,添加字段名到模型的appends属性 ; 以下例子实现 通过处理 最后登陆时间 字段追加 未登陆天数 属性 :
- 例1
namespace App\Models;class Users extends BaseModel{ /** * [$connection 数据库链接] * @var string */ protected $connection = 'mysql'; /** * [$table 数据表] * @var string */ protected $table = 'users'; // 追加未登录天数属性 protected $appends = ['had_not_login_days']; // 表里没有的字段 // 处理没登陆天数 public function getHadNotLoginDaysAttribute() { $login = $this->attributes['last_login_time']; // $this->attributes表的字段属性 $create = $this->attributes['created_at']; if( $login > 0) { $time = time() - $login; // 有最后登陆时间 } else { $time = time() - $create; // 没,创建时间 } return intval(floor($time / 86400)) . '天' ; }}
namespace App\Http\Controllers;use DB;use App\Models\Users;class UserController extends BaseController{ public function getTest() { $res = Users::find(1); // $res = OpadmUsers::find(1)->had_not_login_days; 50天 dd($res) }}
打印结果可以看到 appends 属性:
- 例2
// 在模型里定义 public function getLastLoginTimeAttribute($value) { if( time() - $value > 30 * 86400 ) return $this->attributes['last_login_time'] = '该用户长时间未登录'; } // 获取数据 $res = OpadmUsers::find(1)->last_login_time; dd($res); // '该用户长时间未登录'
定义修改器:要定义一个修改器,需要在模型中定义setFooAttribute方法,其中Foo是你想要访问的字段(使用驼峰式命名规则)。接下来让我们为last_login_time属性定义一个修改器,当我们为模型上的last_login_time赋值时该修改器会被自动调用:
- 例3: 修改性别
// 在模型public function setSexAttribute($value){ if( $value == '男' ) $this->attributes['sex'] = 1; else $this->attributes['sex'] = 0;}// 控制器$res = OpadmUsers::find(1);$res->sex = '男';$res->save(); // 写入数据库 sex = 1
阅读全文
0 0
- laravel ORM 的setAttributes 与 getAttributes
- Laravel的ORM入门
- laravel的Eloquent ORM操作
- Laravel Eloquent ORM的hasOne和belongsTo
- js中SetAttributes的用法和注意事项
- yii2 ar的setAttributes方法注意
- Laravel Eloquent ORM--整理
- laravel Eloquent ORM
- Laravel Eloquent ORM--整理
- Laravel Eloquent ORM--整理
- laravel ORM 打印数据库
- laravel ORM 打印SQL
- Laravel ORM操作
- laravel CURD ORM
- laravel中ORM使用
- CAS返回对象的更多属性Assertion.getPrincipal().getAttributes()
- 集成了Laravel的Eloquent ORM的Yaf框架
- laravel--5 Eloquent ORM("优雅的"对象关系映射)
- Java.math.BigDecimal.stripTrailingZeros()方法实例
- bzoj1051 受欢迎的牛 结论+tarjan
- 函数 toPlainString() 和 toString()
- Python学习笔记----高阶函数
- CCF CSP 201609-1 最大波动
- laravel ORM 的setAttributes 与 getAttributes
- Android N Settings实战开发(1)一,二级界面增加
- leetcode 146. LRU Cache
- 【Scikit-Learn 中文文档】多类和多标签算法
- ElGamal 加密(利用Gmp计算)
- 【数据结构】队列和栈 Python 实现
- Vector
- 棋盘覆盖java代码
- Java【集合系列】-01-总体框架