【laralve】访问器的灵活使用
【摘要】
author:咔咔
WeChat:fangkangfk
这是素材
数据库:
源码:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; /** * 商品分类 */class GoodsCategory extends ...
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的获取器
然后访问
这就说明了,我们可以使用自定义的获取器来修改数据
文章来源: blog.csdn.net,作者:咔咔-,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/fangkang7/article/details/95219865
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)