【问题标题】:Multi table Mysql joint query in LaravelLaravel中的多表Mysql连接查询
【发布时间】:2020-03-18 04:52:08
【问题描述】:

我正在尝试连接两个表 Customer 和 Customer_Usage 以获得结果。表如下所示。

表:客户

+----+-------+-------------+--------+
| 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();

【问题讨论】:

标签: php mysql laravel laravel-5 eloquent


【解决方案1】:

推荐左连接来实现你所需要的。

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();

【讨论】:

    【解决方案2】:

    使用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();
    

    您将获得如上所示的所需输出。

    【讨论】:

    • 我对这一行毫无疑问->join('Customer_Usage','Customer.Customer_Id''=',在Customer_Id''='之后,认为少了一个逗号。不是吗?
    • 是编辑了答案
    猜你喜欢
    • 2013-01-18
    • 2014-01-06
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2022-01-06
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多