我有SELECT * FROM category WHERE name LIKE 'Your_Name'
,users
和promocodes
表格。模型:users_promocodes
,User
和Promocode
。
它们是UserPromocode
表的关键:users_promocodes
- > user_id
,users.id
- > promocode_id
当我从基地删除promocode时,我需要带走promocode奖金。
如何为具有promocodes.id
的用户提供Eloquent users.bonus
(users.bonus - 5
)值?
答案 0 :(得分:3)
我会使用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);
}
假设用户只能拥有一个PromoCode,则需要上述一对多关系,如果是这种情况,只需在promo_code_id
上添加users
字段。