微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将请求实例传递给Model Observer,Laravel 5.4

我刚刚学习了模型观察者,并希望将我的一些逻辑从控制器转移到观察者.这就是我所拥有的:

AppServiceProvider.PHP

public function boot()
{
    WorkOrder::observe(WorkOrderObserver::class);
}

WorkOrderObserver.PHP

namespace App\Observers;

use App\Site;
use App\WorkOrder;
use Carbon\Carbon;
use App\WorkOrderNumber;

class WorkOrderObserver
{

    public function creating(WorkOrder $workOrder)
    {
        $branchOfficeId = Site::findOrFail($request->site_id)->branch_office_id;
        $today = Carbon::today('America/Los_Angeles');
        $todaysWorkOrderCount = WorkOrder::where('created_at_pst', '>=', $today)->count();

        $workOrder->work_order_number = (new WorkOrderNumber)
            ->createWorkOrderNumber($branchOfficeId, $todaysWorkOrderCount);
        $workOrder->completed_by = null;
        $workOrder->status_id = 1;
        $workOrder->work_order_billing_status_id = 1;
        $workOrder->created_at_pst = Carbon::Now()->timezone('America/Los_Angeles')
            ->toDateTimeString();
    }

}

问题是从观察者内部访问请求.我在文档中没有看到任何内容.我发现这里有一个引用这个的线程,它建议使用请求帮助函数.我试过请求(‘site_id’),但它是空的.

解决方法:

这很简单,我发布它有点尴尬.无论如何,如果有人找到这个帖子,这就是解决方案.在您的观察者中,添加一个接受请求并设置属性的构造函数.

protected $request;

public function __construct(Request $request)
{
    $this->request = $request;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐