You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Livewire中如何仅在User的g10_eng_unwh从0变为1时获取用户

你可以借助Laravel模型自带的getOriginal()方法获取字段修改前的原始值,结合isDirty()(保存前调用)或wasChanged()(保存后调用)方法判断字段是否发生变更,就能精准匹配「字段从0变为1」的触发条件。

修改后的代码示例如下:

public function purchased(User $user)
{
    $token = null;
    // 仅当g10_eng_unwh从0变更为1时赋值token
    if (
        $user->isDirty('g10_eng_unwh')
        && $user->getOriginal('g10_eng_unwh') == 0
        && $user->g10_eng_unwh == 1
    ) {
        $token = "g10_eng_unwh";
    }

    // g7_eng_unwh如果也需要相同的从0变1触发逻辑可以参考下面写法,不需要就删掉
    if (
        $user->isDirty('g7_eng_unwh')
        && $user->getOriginal('g7_eng_unwh') == 0
        && $user->g7_eng_unwh == 1
    ) {
        $token = "g7_eng_unwh";
    }

    // 匹配到变更场景才执行后续逻辑
    if (!is_null($token)) {
        $time = Carbon::now()->format('Y-m-d');
        dd($user->email, $time, $token);
    }
}

补充说明:

  • 如果你的purchased方法是在User模型保存之后调用的,把代码里的isDirty替换为wasChanged即可,其余逻辑不变
  • 该逻辑在Livewire场景下也可正常使用,只要你传入的是对应修改后的User模型实例即可

内容的提问来源于stack exchange,提问作者Lelough Lemperough

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:39:03