如何在Laravel 5中的控制器中使用Request :: user()?

时间:2015-10-12 20:56:27

标签: php laravel laravel-5

我正在开发这个以批量存储用户“订单”。 我的疑问是:如何在OrderController store()中请求用户数据 我已经调试了这个,$id_usernull,可能是因为我已经在使用Request::get表单数据了。 我可以从表单输入中传递$id_user,但我想这不安全。

public function store(Request $request)
    {               
        $quantities = Request::get('quantity');
        $products = Request::get('id_product');
        $hash_card = Request::get('hash_card');

        $user = Request::user();
        $id_user = $user->id_user;

        $total_products = count($products);


        for($i=0;$i<$total_products;$i++){ 

            if($quantities[$i]>0){ 

                $id_product = $products[$i];
                $quantity = $quantities[$i];

                $product=Product::find($id_product); 
                $product_price=$product->price;  

                $order_data[] = [
                                'id_user' => $id_user, 
                                'id_product' => $id_product,
                                'quantity' => $quantity,
                                'product_price' => $product_price,
                                'hash_card' => $hash_card
                                ];  
            }
        }

        Order::insert($order_data);  

        return redirect('pedidos?add&card='.$hash_card);   

    }

欢迎任何帮助!

1 个答案:

答案 0 :(得分:3)

你有调试吗?因为这个脚本根本不应该运行。您不应该静态调用该方法。

试试这个:

public function store(Request $request)
{               
    $quantities = $request->quantity;
    $products = $request->id_product;
    $hash_card = $request->hash_card;

    $id_user = $request->user()->id;

    $total_products = count($products);


    for($i=0;$i<$total_products;$i++){ 

        if($quantities[$i]>0){ 

            $id_product = $products[$i];
            $quantity = $quantities[$i];

            $product=Product::find($id_product); 
            $product_price=$product->price;  

            $order_data[] = [
                            'id_user' => $id_user, 
                            'id_product' => $id_product,
                            'quantity' => $quantity,
                            'product_price' => $product_price,
                            'hash_card' => $hash_card
                            ];  
        }
    }

    Order::insert($order_data);  

    return redirect('pedidos?add&card='.$hash_card);   

}