отношения hasManyThrough в Laravel 5.8 - PullRequest
0 голосов
/ 29 марта 2019

У меня есть следующая структура:

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 голосов
/ 30 марта 2019

В этом случае вам нужно использовать 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();
0 голосов
/ 30 марта 2019

Благодаря Тиму Льюису, мне нужно было принадлежать ToMany, потому что order_products - это сводная таблица. Как то так.

public function products()
{
    return $this->belongsToMany('App\Product', 'order_products', 'order_id', 'product_id');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...