1
我刚刚了解了模型观察者,并且想将我的一些逻辑从控制器移到观察者。下面是我有:将请求实例传递给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();
}
}
问题是访问来自观察者内的请求。我没有看到文档中的任何内容。我在这里发现了一个引用这个的线程,并且它建议使用请求帮助函数。我试过request('site_id')
,但它是空的。
您是否尝试过\照亮\ Http \ Request $请求参数?我认为它会被自动注入。 –
我尝试过,但有一个错误...'TypeError:传递给App \ Observers \ WorkOrderObserver :: creating()的参数2必须是Illuminate \ Http \ Request的实例,没有给出' –