Laravel 数据库 解决与 leftjoin 类似的问题
解决类似问题:例如
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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。