laravel new列默认值created_at值

时间:2016-09-26 18:09:00

标签: php laravel-5

我有一张包含以下订单的表:

顺序

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是否可以更新/保存在已保存的事件中,或者这会创建一个无限的保存循环?

1 个答案:

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