Multi Table Mysql Совместный запрос в Laravel - PullRequest
1 голос
/ 18 марта 2020

Я пытаюсь соединить две таблицы Customer и Customer_Usage для получения результата. Таблицы показаны ниже.

Таблица: Customer

+----+-------+-------------+--------+
| id | Ip_Id | Customer_Id | Class  |
+----+-------+-------------+--------+
| 1  | 100   | A           | First  |
| 2  | 100   | B           | First  |
| 3  | 100   | C           | First  |
| 4  | 101   | D           | First  |
| 5  | 101   | E           | First  |
| 6  | 100   | F           | Second |
+----+-------+-------------+--------+

Таблица: Customer_Usage

+----+-------------+----------------+
| id | Customer_Id | Usage          |
+----+-------------+----------------+
| 1  | A           | 1245           |
| 2  | B           | 4414           |
| 3  | C           | 8521           |
| 4  | D           | 2314           |
| 5  | E           | 521            |
| 6  | F           | 5412           |
+----+-------------+----------------+

Условие: введите значение для поиска Ip_Id, например, для 100 это даст результат, как показано ниже. Как сделать объединение для этих двух таблиц в Laravel, используя Mysql

Результат вывода

+-------+-------------+----------------+
| Ip_Id | Customer_Id | Usage          |
+-------+-------------+----------------+
| 100   | A           | 1245           |
| 100   | B           | 4414           |
| 100   | C           | 8521           |
| 100   | F           | 5412           |
+-------+-------------+----------------+

Этот запрос пытается.

 $result        = DB::table('Customer')
                ->where('Ip_Id','=','100')
                ->get();

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Левое соединение рекомендуется для достижения того, что вам нужно.

DB::table('Customer')
            ->select('Customer.Ip_Id','Customer.Customer_Id','Customer_Usage.Usage')
            ->leftJoin('Customer_Usage', 'Customer_Usage.Customer_Id', '=', 'Customer.Customer_Id')
            ->where('Customer.Ip_Id',100)
            ->get();
0 голосов
/ 18 марта 2020

Использование Eloquent Inner Join как:

$results  = DB::table('Customer')
->select('Customer.Ip_Id','Customer.Customer_Id', 'Customer_Usage.Usage')
->join('Customer_Usage','Customer.Customer_Id', '=','Customer_Usage.Customer_Id')
->where('Ip_Id', 100)                
->get();

Вы получите желаемый результат, как указано выше.

...