public function viewCustomerOrders(){
$orders = Order::with('ordersz')->get();
return view('admin.orders.view_customers_order')->with(compact('orders'));
}
我的公共功能代码
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
public function ordersz(){
return $this->hasMany('App\OrderProduct','order_id');
}
function product() {
return $this->hasOne('App\Product');
}
}
我在订单模型上的关系
可以做到这一点吗?
foreach($orders->ordersz as $try){
$getTheProductIDfromOrdersTabel= $try->product_id;
matchItTomyProductTableTogetName= Product::where('id',$getTheProductIDfromOrdersTabel)->get();
}
因为我有订单表和order_products表,并且里面有order_id和product_id,所以我想从我的条件中获取product_id并将其与我的产品表匹配以显示其产品名称。
答案 0 :(得分:0)
您所描述的是一种many-to-many关系。为了包括所有必需的数据,您将使用eager loading。
考虑三个表-orders
,products
和order_product
。各个模型的定义如下:
订购
class Order extends Model
{
public function products()
{
return $this->belongsToMany(Product::class);
}
}
产品
class Product extends Model
{
public function orders()
{
return $this->belongsToMany(Order::class);
}
}
数据透视表order_product
-仅需要两列:order_id
和product_id
。
现在您的控制器方法可以更新为:
public function viewCustomerOrders()
{
return view('admin.orders.view_customers_order')->with([
'orders' => Order::with('products')->get()
]);
}
最后,要在视图文件中显示信息,请使用@foreach
:
@foreach($orders as $order)
Order ID: {{ $order->id }}
@foreach($order->products as $product)
Product Name: {{ $product->name }}
@endforeach
@endforeach