orm 访问器如何获取原始属性?

  return NewsMedias::query()->select([
            'id',
            'name',
            'logo as avatar',
            'launch_price',
            'industry_category',
            'cover_region',
            'publish_time',
            'remark'
        ])->paginate($params['page_size']);
/**
     * 获取用户的名字。
     *
     * @return Attribute
     */
    protected function name(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => 111,
        );
    }

上边我用get获取数据的时候获取到的name是经过访问器以后的 也就是拿到了111,但是在某些场景下 我不想使用修改器 想获取原始数据 同样是用get 方法 有没有 什么办法解决? 版本是laravel9

我是想接口返回过去的躲避过访问器 直接返回原始数据

    {
                "id": 1,
                "name": 111, // 这里想要111就是111  想要原始的就是原始的
                "launch_price": "51.00",
                "industry_category": 1,
                "cover_region": 100,
                "publish_time": 4,
                "remark": "账号随机发布"
            },
CollinAi
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

不建议修改原始属性,如果name有格式化的要求,可以新增一个name_format属性,name保留原始的


    protected function getNameFormatAttribute()
    {
        return $this->name?:'111';
    }
1年前 评论
Efrain (楼主) 1年前
Imuyu (作者) 1年前
唐章明 1年前
讨论数量: 16

思路是这样,高版本没用过,代码如果错了自己按照思路改改


/**
     * 获取用户的名字。
     *
     * @return Attribute
     */
    protected function name(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => 111,
        );
    }


    //这里加上这个,---感谢@王小大
    protected $appends = ['name_original'];

 /** 获取用户的名字的原始值。
     *
     */
    public function getNameOriginalAttribute()
    {
        return $this->attributes['name'];
    }
1年前 评论
Efrain (楼主) 1年前
renxiaotu (作者) 1年前
renxiaotu (作者) 1年前

之前是 getOriginal,从 7.x 改为了 getRawOriginal: learnku.com/docs/laravel/7.x/upgra...

$instance->getRawOriginal('name');
1年前 评论

试试getRawOriginal()方法 $row->getRawOriginal('name')

1年前 评论
$user = User::find(1);

// 7.x 以下
$user->getOriginal('name');
// 7.x 以上 
$user->getRawOriginal('name');
1年前 评论
Efrain (楼主) 1年前
王小大 (作者) 1年前
王小大 (作者) 1年前

不建议修改原始属性,如果name有格式化的要求,可以新增一个name_format属性,name保留原始的


    protected function getNameFormatAttribute()
    {
        return $this->name?:'111';
    }
1年前 评论
Efrain (楼主) 1年前
Imuyu (作者) 1年前
唐章明 1年前

访问器不要和原属性同名啊,,,

1年前 评论

最近翻源码,发现可以使用$model->getAttributeFromArray('字段')来获取原始数据

5个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!