Php 如何在同一视图中显示特定订单的详细信息以及仅属于该特定订单的所有产品
如何在同一视图中显示特定订单的详细信息以及仅属于该特定订单的所有产品?尝试此操作,但在执行dd()时获取空数组。 订单管理员:Php 如何在同一视图中显示特定订单的详细信息以及仅属于该特定订单的所有产品,php,laravel,eloquent,laravel-7,Php,Laravel,Eloquent,Laravel 7,如何在同一视图中显示特定订单的详细信息以及仅属于该特定订单的所有产品?尝试此操作,但在执行dd()时获取空数组。 订单管理员: public function show(Order $order){ $products = Product::where('order_id', $order); //dd($products); return view('order.view', ['order'=>$order, 'products'=>$products])
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>
在视图中,您可以从
$order->products
获取产品集合,您需要在查询Product::where('order\u id',$order)->get()
中使用get()
,谢谢您的回答,但这似乎不是一个好方法,因为在本例中,$order变量为空。我应该如何定义show方法,以便能够在查看当前状态时获取订单详细信息,并能够使用循环get$order->products->id..等?实际上,我刚刚实现了另一种方法-->公共函数show(order$order){return view('order.view',['order'=>$order]);}和view.blade.php-->@foreach($order->products as$product)解决了这个问题。但是你的建议似乎更有用,也更容易获得id。谢谢!
public function show($id){
$order = Order::with('products')->find($id);
return view('order.view', ['order'=>$order]);
}