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


How to use Request::user() inside a controller in 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);   
    }

欢迎任何帮助!

你有没有打开调试?因为这个脚本根本不应该运行。您不应该能够静态地调用该方法。

试试这个:

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);   
}