Laravel 8 模型属性修改器问题

模型定义属性修改器后,获取查询数据后如果获得原始值

class UserRechargePackageModel extends Model
{
    public function getPriceAttribute($value): ?string
    {
        return bcdiv($value,"100",2);
    }
}
$data = UserRechargePackageModel::find(1);

如果获取price字段原始值,未经过修改器修改的值。
测试使用$data->getOriginal('price')无效。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

getOriginal 返回的是未通过 实例属性修改 的值, getRawOriginal 返回的是未通过 修改器修改 的值

$user = App\Models\User::first();
// name: abc
dump($user->name) // abc
$user->name = "def";
dump($user->name) // def
dump($user->getOriginal('name')); // abc
3年前 评论
讨论数量: 4

getOriginal 返回的是未通过 实例属性修改 的值, getRawOriginal 返回的是未通过 修改器修改 的值

$user = App\Models\User::first();
// name: abc
dump($user->name) // abc
$user->name = "def";
dump($user->name) // def
dump($user->getOriginal('name')); // abc
3年前 评论

laravel7.x 以前 ->getOriginal ()
laravel7.x 以后 ->getRawOriginal ()

3年前 评论

@beatles 原来此,8.0的文档中没找到这个方法,在API文档中找到了

file

3年前 评论

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