Code前端首页关于Code前端联系我们

Laravel 数据库 解决与 leftjoin 类似的问题

terry 2年前 (2023-09-25) 阅读数 48 #后端开发

解决类似问题:例如

Customers 表,拥有客户历史表的 Leader,现在显示客户信息并显示每个客户当前所属的 Leader,以及最近拥有的 Leader

客户表 id new_leader old_leader old_leader customer_id id new_leader old_leader customer_id 李总                                                             王总 共 1 条 2020-03-22

3 王总李总 2020-03-21

最初,当我向历史客户表添加数据时,我想要删除以前的记录并保存新记录。很难展示一个客户有多少个历史司机,而且客户不多,所以我这样写了

SELECT
`客户`.*,`d`.`old_manager`,`new_manager`
`客户。`created_at'AS`创建日期,
th%d,FORMAT'(%m%d,DATE_FORMAT ') ASbirthd_sort
FROM
`客户`
LEFT JOIN (
SELECT
a.*

public function getQuery()
{
    $customers = (new Customer)->on('mysql-slave')->where('', '>', '0');
    $sql = '((SELECT a.* FROM customer_distribute_logs AS a,(SELECT    b.`customer_id`,MAX() AS `created_at`FROM
         customer_distribute_logs AS b GROUP BY    b.`customer_id`)AS c WHERE a.`created_at`=c.`created_at` AND a.customer_id = c.customer_id) as d)';

    $customers = $customers->leftJoin(DB::Raw($sql), '', '=', '')
        ->select('customers.*', '',`` 'customers.created_at as created_date',
            DB::raw("DATE_FORMAT(birthd , '%m%d ') as birthd_sort")
        );
    return $customers;
}

a.* FROM_distribute

选择
b .`customer_id`,
MAX() AS `创建于`
FROM
customer_distribute_logs AS b
组由♓ 组由♓♿♓
c
哪里
a.`created_at` = c.`created_at`
AND a.customer_id = c.customer_id

) as d IS `customers`.`id` = `d`.` Customer_id`
` customers`.`id` > 0
AND `customers.`deleted_at' IS NULL

上面的原生sql语句,

下面的laravel项目也主要使用了我ravels不懂ORM,我可以不要写一个

public function getQuery()
{
    $customers = (new Customer)->on('mysql-slave')->where('', '>', '0');
    $sql = '((SELECT a.* FROM customer_distribute_logs AS a,(SELECT    b.`customer_id`,MAX() AS `created_at`FROM
         customer_distribute_logs AS b GROUP BY    b.`customer_id`)AS c WHERE a.`created_at`=c.`created_at` AND a.customer_id = c.customer_id) as d)';

    $customers = $customers->leftJoin(DB::Raw($sql), '', '=', '')
        ->select('customers.*', '',`` 'customers.created_at as created_date',
            DB::raw("DATE_FORMAT(birthd , '%m%d ') as birthd_sort")
        );
    return $customers;
}

方法来获取模型对象。现在它不是很漂亮,但它可能会满足我的需求。我现在正在做,下次我弄清楚时我会修复它。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门