如何在同一视图中显示特定订单详细信息和仅属于该特定订单的所有产品

How to show specific order details and all products which belongs only to that specific order on same view

如何在同一视图中显示特定订单的详细信息以及仅属于该特定订单的所有产品?尝试这样做,但在执行 dd() 时得到空数组。 订单控制器:

public function show(Order $order){
    $products = Product::where('order_id', $order);
    //dd($products);
    return view('order.view', ['order'=>$order, 'products'=>$products]);
}

web.php

    //Orders and products related routes
    Route::get('/order/{order}', 'OrderController@show')->name('order');
    Route::get('/orders/create', 'OrderController@create')->name('order.create');
    Route::post('/order', 'OrderController@store')->name('order.store');
    Route::get('/order', 'OrderController@index')->name('order.index');
    Route::delete('/order/{order}/destroy', 'OrderController@destroy')->name('order.destroy');
    Route::get('/order/{order}/edit', 'OrderController@edit')->name('order.edit');
    Route::put('/order/{order}/update', 'OrderController@update')->name('order.update');
 
    Route::get('/order/{order}/product/create', 'ProductController@create')->name('product.create');
    Route::post('/order/{order}/product', 'ProductController@store')->name('product.store');
 

Product.php

namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class Product extends Model
{
    protected $guarded = [];
    
    public function order(){
        return $this->belongsTo(Order::class);
    }
}

Order.php

namespace App;
 
use Illuminate\Database\Eloquent\Model;
use App\Customer;
 
class Order extends Model
{
    protected $guarded = [];
    
    public function customer(){
        return $this->belongsTo(Customer::class);
    }
 
    public function products(){
        return $this->hasMany(Product::class);
    }
 
 
}

我建议将路由参数的名称更改为 id 以保持一致性和可读性

Route::get('/order/{id}', 'OrderController@show')->name('order');

在视图中为您的路线生成 url 作为

<a href="{{ route('order', [$id]) }}">Show Order</a>

并且在控制器中,您可以获得订单详细信息以及相关产品,如

public function show($id){

    $order = Order::with('products')->find($id);
    
    return view('order.view', ['order'=>$order]);
}

在视图中,您可以从 $order->products

中获取产品集合