php - 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
具有一些相同的结构,包括名称、位置、一些用于确认的布尔值等以及日期字段
甚至后来编辑:
我仍然没有找到任何“雄辩”的解决方案,我现在不确定我是否可以只在一个查询中收集我需要的所有数据,但这是我迄今为止所能提供的(invoices
和expenses
),对于特定的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;
}
解决方案
推荐阅读
- r - 将两列中的值合并到 R 中的一个新列中
- django - 为什么 Celery 给出 No such file or directory 错误?
- r - 使用 shinyapps.io 自动重新读取源文件
- java - JavaFX - TextFlow 中的下标和上标文本
- javascript - 使用 jquery 或 javascript 将加载事件附加到 iframe 中的图像
- c++ - 创建类型列表并访问每种类型的静态成员?
- c - 对于某些输入,C 程序突然结束
- ruby-on-rails - 在 Rails activerecord 搜索中查找确切的子字符串
- sql - PostgreSQL 查询组由两个“参数”
- ansible - 无法打开会话错误