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



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

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 IlluminateDatabaseEloquentModel;

class Product extends Model
{
protected $guarded = [];

public function order(){
return $this->belongsTo(Order::class);
}
}

Order.php

namespace App;

use IlluminateDatabaseEloquentModel;
use AppCustomer;

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得到产品集合

最新更新