Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel Mysql DB加入2个多态双亲_Php_Mysql_Laravel_Join_Laravel 5.3 - Fatal编程技术网

Php Laravel Mysql DB加入2个多态双亲

Php Laravel Mysql DB加入2个多态双亲,php,mysql,laravel,join,laravel-5.3,Php,Mysql,Laravel,Join,Laravel 5.3,我正在尝试创建一个可以处理连接多个多态父对象的查询 $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'

我正在尝试创建一个可以处理连接多个多态父对象的查询

$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');
});
由于它不喜欢字符串而不喜欢列名,因此失败。但我确实觉得这似乎并不正确

这只是整个report类的一部分。在这种情况下,多态表
time\u records
需要连接到两个表。但它基本上需要1个连接。因此,所有连接的时间记录都位于
time
名称下,因此使用的所有列都符合整个查询的结构

我在这里连接了许多表,以创建一种虚假的层次结构

categories.name为lev1,projects.name为lev2,tasks.name为lev3,time.time为time

这在某种程度上是我构造select的方式,这样集合就可以对名称进行分组,然后将项目分组到名称下,然后向下分组,最后得到一个我的应用程序可以读取/理解的集合层次结构


我所寻找的只是一个最终结果,在这个结果中,我可以引用
time\u records
表,该表包含基于项目或任务的行数据(因此,如果是项目,则lev3将为null/空白)。我不介意它是否不是一个连接,或者它是否只是一个原始的SQL查询。我只是不能用正确的方法来结束我正在寻找的结果,而将其保留为1个查询(因为收集已经够累人了)

我想出了一个办法,这更多的是一种心态的改变

与其根据您想要的顺序进行查询,不如调整select。因此,如果需要表中的数据,请为其添加select参数,如果不是在结果中“隐藏”表,则始终将其联接

这一部分我在我的问题中没有提到,我现在确实明白了,这在隔离为什么这是一个很难理解的问题方面是相当重要的

颠倒顺序,而不是从顶层往下,从下往上,因此从
time\u records
开始作为查询的主表,并连接所有其余的表,这样,与之相关的两个表可以更简单地连接


所以最后的答案是,我完全用错误的方式看待这个问题。它有助于写出原始SQL输出以找到答案并手动查询。

我找到了一种方法,这更多的是一种思维方式的改变

与其根据您想要的顺序进行查询,不如调整select。因此,如果需要表中的数据,请为其添加select参数,如果不是在结果中“隐藏”表,则始终将其联接

这一部分我在我的问题中没有提到,我现在确实明白了,这在隔离为什么这是一个很难理解的问题方面是相当重要的

颠倒顺序,而不是从顶层往下,从下往上,因此从
time\u records
开始作为查询的主表,并连接所有其余的表,这样,与之相关的两个表可以更简单地连接

所以最后的答案是,我完全用错误的方式看待这个问题。它有助于写出原始SQL输出,以找到这一点并手动查询