【问题标题】:Laravel queue to store dataLaravel 队列存储数据
【发布时间】:2018-06-11 08:52:30
【问题描述】:

我想尝试通过数据库队列 Laravel 将数据存储到数据库中。

但我总是收到此错误“未定义的偏移量:0”

这是我的控制器:

    public function store(Request $request)
    {
        $order = new Order;
        $order->code = $request->code;
        $order->created_at = $request->created_at;

        $this->dispatch(new SalesOrder($order));
    }

这是我的销售订单工作:

    protected $order;

    public function __construct(Order $order)
    {
        $this->order= $order;
    }


    public function handle()
    {
         $this->order->save();
    }

我的代码有问题吗?请有人帮我解决这个问题。反正比不上。

【问题讨论】:

    标签: laravel-5 queue


    【解决方案1】:

    而不是通过Order对象传入作业订单数据,而在作业中保存订单。

    控制器代码。

    public function store(Request $request)
    {
        $data['code'] = $request->code;
        $data['created_at'] = $request->created_at;
    
        $this->dispatch(new SalesOrder($data));
    }
    

    职位代码

    protected $data;
    
    public function __construct(array $data)
    {
        $this->data = $data;
    }
    
    
    public function handle(Order $order)
    {
        if (!$order->craete($this->data)) {
            // when not saved try again
            $this->release();
        }
    
        return true;
    }
    

    【讨论】:

    • @Almaida Jody 你试试这个吗??
    • @AlmaidaJody Jody 这是你预期的结果??
    • 我很抱歉这个迟到的回复..我已经尝试过,它再次返回相同的错误..“未定义的偏移量:0”
    • 你能告诉我到底要做什么,通过 laravel 队列保存数据吗?
    • 即使我只是做 public function handle(Order $order) { dd($order);exit(); } 在我的句柄函数中,它将返回“未定义的偏移量 [0]”。
    【解决方案2】:

    尝试运行

    $order = new Order;
    $order->code = $request->code;
    $order->created_at = $request->created_at;
    

    在你的工作中,看起来像这样

    protected $order;
    protected $request
    
    public function __construct($request)
    {
      $this->order = new Order;
      $this->request = $request;
    }
    
    
    public function handle()
    {
      $this->order->code = $request->code;
      $this->order->created_at = $request->created_at;
      $this->order->save();
    }
    

    在你的控制器中

    public function store(Request $request)
    {
       $this->dispatch(new SalesOrder($request));
    }
    

    这应该可以。没有测试这是我在手机上写的。

    【讨论】:

    • 现在它返回一个类似这样的错误“不允许序列化'Closure'”
    猜你喜欢
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2014-02-22
    • 2019-08-17
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多