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
相关产品推荐
相关产品推荐

