Laravel 8:如何在分发Jobs前为验证数据添加额外字段?
解决方案
你可以通过两种简单的方式将$order_total和$order_no添加到$orderDetails数组中,再分发任务:
方法1:直接数组赋值
因为validate()方法返回的是关联数组,你可以直接为数组添加新键值对:
public function saveOrder(Request $request){ $orderDetails = $this->validate($request,[ 'customer_name'=> 'required|max:255', 'customer_mobile' => 'required|max:10', 'deliver_address' => 'required' ]); $order_total = 100.00; $order_no = 'O-14587'; // 添加额外字段到数组 $orderDetails['order_total'] = $order_total; $orderDetails['order_no'] = $order_no; OrdersSaveJob::dispatch($orderDetails); }
方法2:使用array_merge()合并数组
如果更倾向于创建新数组来保存完整数据,可以用array_merge():
public function saveOrder(Request $request){ $orderDetails = $this->validate($request,[ 'customer_name'=> 'required|max:255', 'customer_mobile' => 'required|max:10', 'deliver_address' => 'required' ]); $order_total = 100.00; $order_no = 'O-14587'; // 合并验证数据和额外字段 $fullOrderData = array_merge($orderDetails, [ 'order_total' => $order_total, 'order_no' => $order_no ]); OrdersSaveJob::dispatch($fullOrderData); }
注意事项
确保你的OrdersSaveJob类能够正确接收并处理这些新增字段。比如在Job的构造函数或handle()方法中:
class OrdersSaveJob implements ShouldQueue { protected $orderData; public function __construct(array $orderData) { $this->orderData = $orderData; } public function handle() { // 这里可以访问 $this->orderData['order_total'] 和 $this->orderData['order_no'] // 执行保存订单的逻辑 } }
内容的提问来源于stack exchange,提问作者Ish
相关产品推荐
相关产品推荐

