Laravel 'получить свойство необъекта' - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь получить (order_id, product_id и количество) для хранения в Order Product table в базе данных, поэтому при размещении заказа он должен хранить orders и order product в базе данных.Но теперь он только хранит заказы и выдает эту ошибку "Trying to get property of non-object".

Я пробовал некоторые решения из других источников, но все еще не работает.

CheckoutController

<?php
namespace App\Http\Controllers;
use App\Order;
use App\OrderProduct;
use Illuminate\Http\Request;
use cart;
class CheckoutController extends Controller
{

public function index()
{
   return view('checkout');
}


public function create()
{
    //
}


public function store(Request $request)
{
    //Insert into orders table
    $order = Order::create([
        'user_id' => auth()->user() ? auth()->user()->id : null,
        'shipping_email' => $request->email,
        'shipping_name' => $request->name,
        'shipping_city' => $request->city,
        'shipping_phone' => $request->phone,
       // 'error' => null,
    ]);

    //Insert into order product table
    $cart = session('cart');
    foreach(session('cart')  as $products) {
       OrderProduct::create([
          'order_id' => $order->id,
            'product_id' => $products->id,
            'quantity' => $products->quantity,
        ]);
   }


    $cart = session()->remove('cart');
     return redirect()->route('confirmation.index')->with('success_message', 'Thank you! Your payment has been successfully accepted!');
}


public function show($id)
{
    //
}


public function edit($id)
{
    //
}


public function update(Request $request, $id)
{
    //
}


public function destroy($id)
{
    //
}
}

OrderProduct.php

  <?php

  namespace App;

 use Illuminate\Database\Eloquent\Model;

 class OrderProduct extends Model
 {
 protected $table = 'order_product';
 protected $fillable = ['order_id', 'product_id', 'quantity'];
 }

Order.php

<?php

 namespace App;

 use Illuminate\Database\Eloquent\Model;

 class Order extends Model
 {

protected $fillable =  [
    'user_id', 'shipping_email', 'shipping_name', 'shipping_city',   'shipping_phone',
 ];

 public function user()
 {
    return $this->belongsTo('App\User');
 }

 public function products()
 {
    return $this->belongsToMany('App\Product')->withPivot('quantity');
 }
 }

Обновлено:

Я изменил код, теперь он показывает количество, но не может показывать product_id, он выдает ошибку "Trying to get property of non-object"

if ($order) {
        foreach(session('cart')  as $products) {
           if (empty($products)) {
               continue;
           }
           OrderProduct::create([
            'order_id' => $order->id ?? null,
            'product_id' => $products['id'],   //-> This not working
            'quantity' => $products['quantity'],
        ]); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...