ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【laralve】访问器的灵活使用

2019-07-09 18:37:24  阅读:149  来源: 互联网

标签:function return name 灵活 获取 访问 laralve data public


author:咔咔

WeChat:fangkangfk

 

这是素材

数据库:

源码: 

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * 商品分类
 */
class GoodsCategory extends Model
{
    protected  $fillable = ['name', 'category_image'];

    protected $appends = ['levels'];

    public function parent()
    {
        //反向关联
        return $this->belongsTo(GoodsCategory::class);
    }

    public function children() {
        //一对多
        return $this->hasMany(GoodsCategory::class, 'parent_id');
    }

    //定义一个访问器,获取所有祖先类目的ID值
    public function getPossessIdsAttribute()
    {
        //array_filter 将数组中的空值移除
        return array_filter(explode('-', trim($this->possess, '-')));
    }

    //定义一个访问器,获取祖先类目并按层级排序
    public function getAncestorsAttribute()
    {
        return GoodsCategory::query()
            ->whereIn('id', $this->possess_ids)
            //按层级排序
            ->orderBy('level')->get();
    }

    //定义一个访问器,获取以 - 为分隔的所有祖先类目的名称以及当前类目的名称
    public function getFullNameAttribute()
    {
        return $this->ancestors //获取所有祖先类
            ->pluck('name') //获取祖先类目的name 字段为一个数组
            ->push($this->name)//获取当前类目的 name 字段加到数组的末尾
            ->implode(' - '); //用 - 符合将数组的值组成一个字符串
    }

    public function getLevelsAttribute($value) {
        $data = [
            '0' => '根目录',
            '1' => '二级',
            '2' => '三级',
        ];
        // return (is_null($value)) ? $data : $data[$value];
        return (is_null($this->attributes['level'])) ? $data : $data[$this->attributes['level']];
    }

    /**
     * 测试方法
     * @return [type] [description]
     */
    public function test() {
        $category = GoodsCategory::where('id', 105)->first();
        $data = $category->ancestors->toArray();
        return $data;
    }
}

我们可以看一下这俩个方法,test是一个测试方法

访问,可以查出数据来

 

 

可以看到上边设置的获取器是数据库字段里边没有的。那么这就是一个自定义的获取器,下来写一个检测的进行测试

写了一个kaka的获取器

 

然后访问

 

这就说明了,我们可以使用自定义的获取器来修改数据 

标签:function,return,name,灵活,获取,访问,laralve,data,public
来源: https://blog.csdn.net/fangkang7/article/details/95219865

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有