Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在同一视图中显示特定订单的详细信息以及仅属于该特定订单的所有产品_Php_Laravel_Eloquent_Laravel 7 - Fatal编程技术网

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

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])

如何在同一视图中显示特定订单的详细信息以及仅属于该特定订单的所有产品?尝试此操作,但在执行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>

在视图中,您可以从
$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]);
}