2016-09-26 161 views
0

我有一个表样订货:laravel新列默认值created_at值

订购

id 
created_at 
shipped_at 
billed_at 

的shipped_at装箱单和billed_at上invoice.The领域上shipped_at和billed_at最近被添加。

当我创建订单时,有时候我想给created_at日期定一个自定义的日期,如果订单是为了将来的(我知道这不是created_at背后的原始想法)。我想要的是created_at的值在创建时被复制到shipped_at和billed_at,因为我有时使用created_at的自定义值,所以我不能使用当前的日期时间。

我可以在5个不同的位置创建一个订单,所以如果我可以创建一个函数来复制这些值而不是从创建订单的5个位置调用相同的函数,那将会很好。

在laravel框架中是否有一个聪明的位置来将created_at的值复制到shipped_at?

想法: Normaly我想保存后,像节能将是最好的一个事件,但created_at被创建,是可以更新/保存在保存事件或将这种创造的无穷远环保存?

+2

您是否尝试过使用'created'事件?这应该在创建之后触发,而“创建”是在创建期间触发的。 – aynber

回答

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() 
    { 
     // 
    } 
}