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的實例,沒有給出' –