我的开发人员离开了,所以我需要自己完成我们的项目。
我正在使用C#进行自动化,所以有一些编码知识。
问题是: 如何正确充值新用户的平衡?
所以,我需要以某种方式向新用户赠送一些钱。
我是否需要使用刀片视图,并尝试使用
@if user reg date == bla bla
sql query
@else
ignore
@endif
或者,最好用控制器,模型创建?
答案 0 :(得分:1)
正如@Nate指出的那样,模型事件将为您提供所需内容,不管怎样,我使用Creating
事件而不是Created
,因为您可以在记录保存时设置余额,保存更新查询。
您绝对不希望在刀片视图中执行此操作。尝试将所有业务逻辑保留在视图文件之外,并包含在控制器/模型/事件侦听器等中。
您可以通过在模型的静态引导方法中添加事件处理来简化其他答案。
public static function boot()
{
parent::boot();
static::creating(function($model)
{
$model->balance = 100;
});
}
答案 1 :(得分:0)
从另一个类似的答案中,您需要在创建用户时使用事件
在用户的模型中,您可以创建如下的事件处理程序:
/**
* The event map for the model.
*
* @var array
*/
protected $dispatchesEvents = [
'created' => \App\Events\UserCreatedEvent::class,
];
然后你可以创建一个这样的事件:
<强> UserCreatedEvent 强>
<?php
namespace App\Events;
use App\User;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
class UserCreatedEvent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
/**
* Create a new event instance.
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
然后你可以创建一个监听器来创建平衡:
<强> UserCreatedListener 强>
<?php
namespace App\Listeners;
use Illuminate\Support\Facades\Mail;
use App\Events\UserCreatedEvent;
class UserCreatedListener
{
/**
* Create the event listener.
*/
public function __construct()
{
}
/**
* Handle the event.
*
* @param UserCreatedEvent $event
*/
public function handle(UserCreatedEvent $event)
{
// update their balanace here
$event->user->update(['balance' => 1000]);
}
}
然后在你的eventserviceprovider.php里面添加
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\UserCreatedEvent' => [
'App\Listeners\UserCreatedListener',
],
];