我有一张包含以下订单的表:
顺序
id
created_at
shipped_at
billed_at
shipped_at在装箱单上,发票上有billed_at。最近添加了fields_at和billed_at字段。
当我创建订单时,有时我想给created_at日期一个自定义日期,如果订单是为了将来(我知道这不是created_at背后的原始想法)。我想要的是create_at的值在创建时被复制到shipped_at和billed_at,因为我有时使用created_at的自定义值,我只能使用当前日期时间。
我可以在5个不同的位置创建一个订单,所以如果我可以创建一个函数来复制这些值而不是从我创建订单的5个位置调用相同的函数,那就太好了。
laravel框架中是否有一个聪明的位置可以将created_at的值复制到shipped_at?
想法: Normaly我认为像保存这样的事件会是最好的,但是创建后创建的created_at是否可以更新/保存在已保存的事件中,或者这会创建一个无限的保存循环?
答案 0 :(得分:0)
感谢aynber评论使用创建的事件,我提出了以下解决方案:
在命令行中
php artisan make:provider OrderDatesProvider
创建新的提供者。在提供者中:
<?php
namespace App\Providers;
use App\Order;
use Illuminate\Support\ServiceProvider;
class OrderDatesProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
Order::created(function($order){
$order->shipped_at = $order->created_at;
$order->billed_at = $order->created_at;
$order->save();
});
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}