Laravel 5.7 Получить данные из сводной таблицы - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь получить данные из моей сводной таблицы.

таблица клиентов:

---|------
id | name
---|------
1  | John
---|------
2  | Steve

таблица заказов:

---|------
id | description
---|------
1  | Mac
---|------
2  | Keyboard
---|------
3  | Printer

client_order (сводная таблица):

    id | client_id | order_id
    ---|-----------|------
    1  | 1           1
    ---|-----------|------
    2  | 1         | 2
    ---|-----------|------
    3  | 2         | 3

Client.php

 public function orders()
{
    return $this->belongsToMany('App\Order','client_order');
}

Order.php

public function clients()
{
    return $this->belongsToMany('App\Client','client_order');
}

Теперь, как я могу получить данные из сводной таблицы?Например:

John | Mac, Keyboard (2 orders)
Steve| Printer (1 orders)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы можете добиться этого, используя отношения, как сказал @Rouhollah Mazarei, но вы также можете использовать собственную сводную таблицу для получения этой информации:

$clientsOrders = DB::table('client_order')->where('client_id', $clientId)->count()->get();

Это вернет вам, сколько заказов сделал этот клиент, вам просто нужно сообщить его идентификатор.

0 голосов
/ 04 марта 2019

Для клиента:

$client = Client::find(1); //or anyway you create the client
$client->orders; //it gives you a collection that you can get data 
in a foreach loop
//for example
foreach($client->orders as $order){
    echo $order->description;
}

Для заказа:

$order = Order::find(1); //or anyway you create order
$order->clients; //it gives you a collection too
//for example
foreach($order->clients as $client){
    echo $client->name;
}

Это для вашего нового комментария.Сначала вы выбираете своих пользователей, а затем в цикле вы можете получить заказы:

$clients = Client::all();
foreach($clients as $client){
    echo $client->name." | ";
    foreach($client->orders as $order){
        echo $order->description;
    }
    echo "(".count($client->orders)." orders)";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...