Nat*_*eck 3 php laravel eloquent
我刚刚了解了模型观察者,并且希望将我的一些逻辑从控制器转移到观察者。这是我所拥有的:
AppServiceProvider.php
public function boot()
{
WorkOrder::observe(WorkOrderObserver::class);
}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是从观察者内部访问请求。我在文档中看不到任何内容。我在这里找到了一个与此相关的线程,并建议使用请求助手功能。我尝试过,request('site_id')但它是空的。
这是如此简单,我有点不好意思发布了。无论如何,万一有人发现了这个线程,这就是解决方案。在观察者中,添加一个接受请求并设置属性的构造函数。
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
Run Code Online (Sandbox Code Playgroud)