【问题标题】:Problems with join ERROR: 1054连接问题 ERROR: 1054
【发布时间】:2017-08-02 10:23:33
【问题描述】:

我尝试使用join,并以数组作为条件:

$task = Task::join('oc_groups', function($join) use ($filter) {
    foreach($filter['groups']['data'] as $key => $value) {
        $join->on('oc_groups.id', $value); 
    }
}); 

但我收到错误消息:

SQLSTATE[42S22]:未找到列:1054 'on 子句'中的未知列 '1'(SQL:从 oc_tasks 内部连接 ​​oc_groups on oc_groups.id = 1 中选择 oc_tasks.title 作为 task_title,其中 oc_tasks.task_date 介于 2017- 07-01 和 2017-07-31)

1$value 的内容。我做错了什么? - 表oc_groups 有一个名为id 的字段。

【问题讨论】:

  • 这些oc_tasksoc_groups 表之间有什么关系吗?
  • 不,它们之间没有关系。
  • 如果这些表之间没有关系,那么你怎么能加入这些表。
  • 对于联接,表之间没有必要建立关系,如果我错了,请纠正我。这就是为什么我使用这种连接,并且在我的模型中与这个表没有任何关系。
  • 你不能像这样没有关系的加入两个表。

标签: laravel laravel-5.4 lumen-5.4


【解决方案1】:

由于您在这两个表之间没有任何关系,因此请尝试不加入。像这样

select `oc_tasks`.`title` as `task_title` from `oc_tasks` ,`oc_groups`  
where `oc_tasks`.`task_date` between 2017-07-01 and 2017-07-31 and `oc_groups`.`id` = `1`

【讨论】:

  • 谢谢。帮了我很多。但最好的解决方案是在我认为的这些表之间建立关系。
猜你喜欢
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多