0

我有以下结构:

Order
 id

Order_Products
 id
 order_id
 product_id

Products
 id

我正在尝试使用 hasManyTrough (https://laravel.com/docs/5.8/eloquent-relationships#has-many-through)。

我有类似的东西

class Order extends Model{
...
public function products()
{
    return $this->hasManyThrough('App\Product', 'App\OrderProduct', 'product_id', 'id', 'order_id', 'id');
}
...
}

我不能让它工作。我很困惑,有人可以帮助我。

4

2 回答 2

2

在这种情况下,您需要使用belongsToMany关系。


一点点Has Many Through

表:

Product
 id

Order
 id
 product_id

Order_Category
 id
 order_id

Order Categories在这种情况下,您可以获得Product

class Product {
  // ...

  order_categories() {
    return $this->hasManyThrough('App\Post', 'App\User');
  }

  // ...
}

Laravel 做这样的事情。

$orderIds = Order::query()
  ->where('product_id', $product->id)
  ->get(['id'])
  ->pluck('id');

$orderCategories = OrderCategory::query()
  ->whereIn('order_id', $orderIds)
  ->get();
于 2019-03-30T01:24:44.347 回答
0

感谢 Tim Lewis,我需要 belongsToMany,因为 order_products 是数据透视表。像这样的东西。

public function products()
{
    return $this->belongsToMany('App\Product', 'order_products', 'order_id', 'product_id');
}
于 2019-03-29T23:02:41.640 回答