首页 > 解决方案 > Laravel:根据日期从数据库中获取 n 个模型实例

问题描述

正如问题所述,我试图从数据库、多个表中获取n按最早日期排序的(可变)记录数。

这些表并没有太多共同点,所以不确定加入是否是可行的方法。

我至少有 4 个模型,此时我有两种可能的方法:

要么找出下一个日期n,然后尝试从那里构建我的列表,或者n从每个日期中获取然后比较它们并按日期对它们进行排序(这似乎有点微不足道)

我该怎么办?

后期编辑:

我想大致了解以下内容:invoices兑现,expenses付款,activities将遵循和预期events,所以让我们假设这些是我们的桌子。

表看起来像:

invoices

| id | customer_id | invoice_no | issue_date | due_date | paid_on | amount | vat | total | company_id created_at | updated_at | deleted_at |

expenses

| id | name | amount | due_date | paid_on |  user_id |  company_id | expense_category_id | created_at | updated_at | deleted_at |

events并且activities具有一些相同的结构,包括名称、位置、一些用于确认的布尔值等以及日期字段

甚至后来编辑:

我仍然没有找到任何“雄辩”的解决方案,我现在不确定我是否可以只在一个查询中收集我需要的所有数据,但这是我迄今为止所能提供的(invoicesexpenses),对于特定的company

public function nextEvents($limit) {

$results = \DB::select(\DB::raw('SELECT `due_date` AS `date`, `total` as `amount`,  CONCAT("Invoice #", `invoice_no`) as `title`,  "income" as `type` FROM `invoices` WHERE `paid_on` IS NULL AND `company_id` = '.$this->id.'
UNION ALL
SELECT `due_date` as `date`, `amount`, `name` as `title`,  "expense" as `type` FROM `expenses` WHERE `paid_on` IS NULL AND `company_id` = '.$this->id.' ORDER BY `date` LIMIT '.$limit));


return $results;

}

标签: phpmysqldatabaselaravellaravel-5

解决方案


推荐阅读