Laravel 变异器(<model>::全部工作,DB::table(<table>)->get() 不工作)

问题描述 投票:0回答:1

我的 model1 中有这种类型的变异器,用分号替换小数点分隔符:

protected function fee(): Attribute{
    return Attribute::make(
        get: fn (?string $value) => str_replace('.', ',', $value) ?: 0,
        set: fn (?string $value) => str_replace(',', '.', $value) ?: 0,
    );
}

当我将它们传递给刀片时:

Model1::all()

变异器工作并打印我,例如:

1,50

当我将它们传递到刀片时(我有过滤器要执行):

$model1 = DB::table('model1');
$model1->where(....);
$model1->get();

变异器不起作用并打印:

1.50

我做错了什么?

php laravel mutators
1个回答
0
投票

变异器仅适用于雄辩模型,当您使用 DB::table 时,您没有使用模型层与数据库通信,您直接连接到数据库,因此所有变异器,访问器,强制转换属性和...您已经定义在雄辩模型中不参与您的请求生命周期。 :)

© www.soinside.com 2019 - 2024. All rights reserved.