有时候,需要添加数据库中没有相应的字段到数组中,要实现这个,首先要定义一个访问器 ; 定义好访问器后,添加字段名到模型的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 
版权声明:本文为博主原创文章,转载请附上博文链接!

收藏 打印