Laravel 5.8中的hasManyThrough关系

时间:2019-03-29 20:55:57

标签: laravel-5 laravel-5.8

我具有以下结构:

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');
}
...
}

我无法使其正常工作。我很困惑,有人可以帮我吗。

2 个答案:

答案 0 :(得分:0)

感谢蒂姆·刘易斯,我需要belongsToMany,因为order_products是数据透视表。像这样的东西。

a.T
# array([[2, 2, 0, 2, 3, 0, 2, 0, 0, 1],
#        [0, 1, 2, 0, 1, 0, 3, 0, 0, 0]])
b.T
# array([[0, 0, 2, 1, 0, 0, 2, 2, 2, 3],
#        [0, 0, 0, 0, 2, 0, 1, 3, 0, 1]])
mix(a, b, 6).T
# array([[2, 2, 0, 2, 3, 0, 0, 1, 0, 2],
#        [0, 1, 2, 0, 1, 0, 0, 0, 0, 3]])

答案 1 :(得分:0)

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


关于Has Many Through的一些知识。

表格:

Product
 id

Order
 id
 product_id

Order_Category
 id
 order_id

在这种情况下,您可以获得Order Categories的{​​{1}}

Product

Laravel做这样的事情。

class Product {
  // ...

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

  // ...
}