我有 users
、promocodes
和 users_promocodes
表。模型:User
、Promocode
和 UserPromocode
。
它们是 users_promocodes
表的键:user_id
-> users.id
, promocode_id
-> promocodes.id
当我从 base 中删除促销代码时,我需要拿走促销代码奖金。
如何通过 Eloquent users.bonus
(users.bonus - 5
) 为具有 users_promocodes.id = 10
的用户设置值?
最佳答案
我会使用 Model Observers跟踪这些变化。
当 PromoCodes 被删除时,您可以查询 users
表并根据需要更新:
<?php
namespace App\Observers;
class PromoCodeObserver
{
/**
* Listen to the PromoCode Deleting event.
*
* @param PromoCode $promoCode
* @return void
*/
public function deleting(PromoCode $promoCode)
{
// search for all users associated with the promo code
// update the bonus and save changes
$promoCode->users->each(function (User $user) {
$user->update(['bonus' => $user->bonus - 5]);
});
}
}
// User.php
public function promocode()
{
return $this->belongsTo(PromoCode::class);
}
// PromoCode.php
public function users()
{
return $this->hasMany(User::class);
}
假设一个用户只能有一个促销代码,您将需要上述一对多关系,如果是这种情况,只需在 users
上添加一个 promo_code_id
字段.
关于php - Laravel 群发改 Eloquent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48912585/