有时候,需要添加数据库中没有相应的字段到数组中,要实现这个,首先要定义一个访问器 ; 定义好访问器后,添加字段名到模型的appends属性 ; 以下例子实现 通过处理 最后登陆时间 字段追加 未登陆天数 属性 :
例1
namespace App\\Models;
class Users extends Model
{
/**
* [$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)) . \'天\' ;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
namespace App\\Http\\Controllers;
use DB;
use App\\Models\\Users;
class UserController extends Controller
{
public function getTest()
{
$res = Users::find(1);
// $res = OpadmUsers::find(1)->had_not_login_days; 50天
dd($res)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
打印结果可以看到 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); // \'该用户长时间未登录\'
1
2
3
4
5
6
7
8
9
10
11
定义修改器:要定义一个修改器,需要在模型中定义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
---------------------
作者:小Z笔记
来源:CSDN
原文:https://blog.csdn.net/mathphp/article/details/78619043
版权声明:本文为博主原创文章,转载请附上博文链接!
继续阅读与本文标签相同的文章
-
能力小访谈| 支付宝开放能力全方位助力白鲸鱼营销与内容安全
2026-05-18栏目: 教程
-
听众提建议,鼎城区城管局马上改
2026-05-18栏目: 教程
-
PARTsolutions让旺众/Wanzl的新设计缩短了2个多小时
2026-05-18栏目: 教程
-
第六届世界互联网大会将推出5G自动公交线路
2026-05-18栏目: 教程
-
市科技局加快黄石双创战略团队培育
2026-05-18栏目: 教程
