私はストアサイトを持っています。 OrderControllerとPanelCotrollerのデータをモデルオーダーの最後のorderIdで共有したいと思います。ここに私のコードです:Laravelは少数のコントローラ間でデータを共有します
class OrderController extends Controller
{
private $errors = [];
public function addOrder()
{
if (!Auth::check()) {
$this->errors[] = 'error';
return redirect()->back()->with('errors', $this->errors);
}
$userId = Auth::id();
$order = new Order();
$isOrdered = $order->addOrder($userId, $this->cart);
if ($isOrdered){
return redirect('panel')->with('info', 'Everything fine');
}
}
}
私の関数addOrderはtrueまたはfalseを返します。私は関数getOrderIdを呼び出すと、OrderControllerでorderIdを見ることができます。しかし、PanelController - mainSiteアクションでgetOrderIdを呼び出す必要があります。私は注文からそこにオブジェクトを作成すると、その後、私の関数はnullを私に返しgetOrderId ...
class Order extends Model
{
protected $table = 'orders';
public $timestamps = false;
private $orderId;
public function addOrder($userId, Cart $cart)
{
$order = new Order();
$order->user_id = $userId;
$order->save();
foreach ($cart->getItems() as $cartProduct) {
$orderProducts = new OrderProduct();
$orderProducts->product_id = $cartProduct->getProduct()->id;
$orderProducts->order_id = $order->id;
$orderProducts->quantity = $cartProduct->getQuantity();
$orderProducts->price = $cartProduct->getProduct()->price;
$orderProducts->save();
}
$cart->clear();
$this->orderId = $order->id;
return true;
}
public function getOrderId()
{
return $this->orderId;
}
}
そして、ここでは私のPanelControllerです。
クラスPanelControllerはコントローラ を拡張{
public function mainSite()
{
if (Auth::check()) {
$order = new Order();
$order -> getOrderId() <---- here return me null instead my
last OrderId.
return View("panel");
} else {
return redirect('/login');
}
}
どのように私は私の変数注文IDまたはメソッドgetOrderIdに行うことができますが、すべてのコントローラに見えましたか?
Thxこのヒントは非常に役に立ちました。 – wenus