mysql - Laravel mysql 付款后更新余额

标签 mysql laravel

我有 mysql 表:

Balance
id | client_id | balance

Payments**  
id | payment_date | amount | foreign key -> balance_id

当我存储付款金额时,使用什么方法更新余额?

最佳答案

在您的支付模型中,您可以像这样创建一个事件处理程序:

/**
 * The event map for the model.
 *
 * @var array
 */
protected $dispatchesEvents = [
    'created' => \App\Events\PaymentCreated::class,
];

然后你可以像这样创建一个事件:

PaymentCreatedEvent

<?php

namespace App\Events;

use App\Models\Payments;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class PaymentCreatedEvent
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $payments;

    /**
     * Create a new event instance.
     */
    public function __construct(Payments $payments)
    {
        $this->payments = $payments;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

然后你可以创建一个监听器来创建平衡:

PaymentCreatedListener

<?php

namespace App\Listeners;

use Illuminate\Support\Facades\Mail;
use App\Events\PaymentCreatedEvent;

class PaymentCreatedListener
{
    /**
     * Create the event listener.
     */
    public function __construct()
    {
    }

    /**
     * Handle the event.
     *
     * @param PaymentCreatedEvent $event
     */
    public function handle(PaymentCreatedEvent $event)
    {
        // Insert in to the balance table here
    }
}

然后在你的 eventserviceprovider.php 添加

/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
    'App\Events\PaymentCreatedEvent' => [
        'App\Listeners\PaymentCreatedListener',
    ],
];

收听您的事件。您将需要在监听器中创建插入语句...但您明白了。

关于mysql - Laravel mysql 付款后更新余额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48371079/

相关文章:

mysql - 如何使用地理编码器和其他搜索工具搜索附近的数据?

php - Laravel 永无止境的 EXEC

php - 中间带有 <div> 标签的 Laravel 表单

php - Laravel 队列与 supervisord 打开太多 FIFO 文件

php - Symfony 学说时间戳字段

mysql - SQL 中的存储过程以及不同语句的计数

php - Laravel Bootstrap 4 Modal - 在带有 AJAX 调用数据的点击事件上显示模态

php - Laravel 4 Controller 中的依赖注入(inject)实例所有对象

php - 两个 php 表单。第二种形式从第一种形式获取数据。但刷新第二页显示错误

mysql - 如何使用 DBI 从数据库中读取中文文本?