php - Laravel 群发改 Eloquent

标签 php mysql laravel eloquent

我有 userspromocodesusers_promocodes 表。模型:UserPromocodeUserPromocode

它们是 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/

相关文章:

mysql - 选择具有多个参数的 HAVING

php在函数中remove()以方便使用

php - php mysql 每天找出三个最畅销的产品

mysql - REGEX_REPLACE 不匹配从开始到第一次出现 5 位数字单词的所有字符

php - pdo mysql 使用计数

php - 使用 Laravel 查询生成器查找字符串中特定的最后一个字符

php - Laravel:简单表单获取请求返回 500 错误

php - 队列中的通知不发送电子邮件

PHP/MySQL - 选择表 1 中的列等于表 2 中的列的所有行

PHP:在一个表和另一个表中搜索