- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个可以处理加入多个多态父项的查询。
$this->query->join('time_records AS time', function($join) use($taskTable, $projectTable) {
$join->on('time.parent_id', '=', $taskTable . '.id', 'and')
->on('time.parent_type', '=', Task::class, 'and')
->on('time.parent_id', '=', $projectTable . '.id', 'or')
->on('time.parent_type', '=', Project::class, 'and');
});
这失败了,因为它不喜欢字符串而不是列名。但我确实觉得这无论如何都不对。
这只是整个报告类的一部分。在这种情况下,多态表 time_records
需要加入 2 个表。但基本上需要 1 个连接。所以所有连接的时间记录都在时间
名称下,所以使用的列都符合整体查询的结构。
我在这里连接了很多表,以创建一种虚假的层次结构。
categories.name as lev1, projects.name AS lev2, tasks.name AS lev3, time.time AS time
这在某种程度上是我构建选择的方式,这样集合就可以对名称进行分组,然后将其下的项目分组,最后得到一个我的应用程序可以读取/理解的集合层次结构。
我正在寻找的是一个最终结果,我可以在其中引用 time_records
表,该表包含基于项目或任务的行数据(因此,如果它是一个项目那么 lev3 将只是空/空白)。我不介意它是否不是连接,或者它是否只是一个原始 SQL 查询。我只是无法用正确的方法来结束我正在寻找的结果,同时将其保持为 1 个查询(因为集合已经足够繁重)。
最佳答案
我想出了一个办法,更多的是改变了心态。
而不是根据您想要的顺序进行查询,只需调整选择。因此,如果您需要表中的数据,请为它们添加选择参数,如果不是在结果中“隐藏”表,但始终将其连接起来。
这部分我没有在我的问题中展示,现在我确实看到它对于隔离为什么这是一个难以弄清楚的问题非常重要。
颠倒顺序,而不是从顶层向下,而是从下向上,所以从 time_records
作为查询的主表开始,然后连接所有其余表,这样两个表与之相关的可以更简单地加入。
所以最后的答案是我完全以错误的方式看待这个问题。它有助于写出原始 SQL 输出以找出它并手动查询。
关于php - Laravel Mysql DB 加入 2 个多态父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772510/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!