Делать заказ через отношения - PullRequest
0 голосов
/ 20 января 2020

У меня довольно обычная структура таблиц, подобная этой:

 Order
,----------,
|id        | 
|order_num |
`----------`

 OrderItem
,---------,
|id       |
|order_id |
|item_id  |
`---------`

 Item
,----------,
|id        |
|item_name |
|price     |
`----------`

Таблица классов c Order, таблица Item и добавление элементов в заказ с помощью OrderItem Таблица. Однако я хочу получить список OrderItem записей, упорядоченных по столбцу Item item_name из модели Order.

class Order extends Model 
{
     public function order_items()
     {
         return $this->hasMany('App\OrderItem');   <-- How can I get this ordered by the item name?
     }
}

Так что это своего рода ->orderThrough (если такая вещь существовала). Есть ли чистый способ сделать это? 1015 *?

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Нет необходимости строить отношения с сводной таблицей. Ваше отношение должно быть определено с такими элементами:

class Order extends Model 
{
     public function items()
     {
         return $this->hasMany('App\Item', 'OrderItem');
     }
}

Теперь вы можете сделать это:

$order = new App\Order::find(1234);
$items = $order->items()->orderBy('item_name')->get();

Если вы действительно хотите, чтобы порядок был определен внутри отношения:

class Order extends Model 
{
     public function items()
     {
         return $this->hasMany('App\Item', 'OrderItem')->orderBy('item_name');
     }
}

$order = new App\Order::find(1234);
$items = $order->items;
0 голосов
/ 20 января 2020
class Order extends Model 
{
     public function order_items()
     {
         return $this->hasMany('App\OrderItem')->orderBy('name');
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...