【问题标题】:Laravel and MySQL JOINLaravel 和 MySQL 连接
【发布时间】:2018-11-10 12:05:51
【问题描述】:

我对这个查询有疑问...我需要再插入 2 个连接..

->join('torneo as t','t.idtorneo','=','p.id_torneo')

->join('temporada as s','s.idtemporada','=','p.id_temporada')

运行:

->select('p.idpartido','p.id_temporada','t.nombre_torneo as torneo','s.temporada as nombre_temporada','c.nombre as team1','k.nombre as team2','p.estado')

我的代码可以正常工作...但是当添加其他联接时...它失败了。

“SQLSTATE[23000]:违反完整性约束:1052”

public function index(Request $request)
    {
    	if ($request)
    	{
    		$query=trim($request->get('searchText'));
    		$partidos=DB::table('partido as p')
    		->join('club as c','p.idteam1','=','c.idclub')
            ->join('club as k','p.idteam2','=','k.idclub')
            ->select('p.idpartido','p.id_temporada','c.nombre as team1','k.nombre as team2','p.estado')
    		->where('estado','=','Activo')
    		->orderBy('idpartido','desc')
    		->paginate(7);
    		return view('partidos.index',["partidos"=>$partidos,"searchText"=>$query]);
    	}
    }

对不起,我的英语不好。

【问题讨论】:

  • 您确定是这个查询导致了错误吗?这对于 SELECT 语句来说会很奇怪。
  • 您好,完整性约束可能与您的外键有关,您能否更新您的问题并向我们展示您的迁移文件?
  • 我不使用迁移文件...我用 phpmyadmin 制作数据库进行测试

标签: mysql laravel join


【解决方案1】:

数据可能有问题,因为您在 Mysql 中使用->join,即innner join,尝试使用->leftJoin,如果数据可用,它不会让查询中断,否则它将进行连接将连接表中的选定列留空,希望对您有所帮助:)

【讨论】:

  • 我将 join 更改为 leftjoin 并添加 ->leftjoin('torneo as t','p.id_torneo','=','t.idtorneo') 和 't.nombre_torneo as torneo_nombre'选择和...错误:错误:SQLSTATE [23000]:违反完整性约束:1052 where 子句中的列“estado”不明确(SQL:从partido 中选择计数(*)作为p 的聚合为p 左连接@987654326 @ as c on p.idteam1 = c.idclub 左连接club as k on p.idteam2 = torneo左连接torneo987 @ as t on p.id_torneo = t.idtorneo 其中estado = 激活)
  • where 子句不明确尝试为您选择的列提供别名,例如,如果我要加入两个表 T1T2,它们的 id 列相同,那么如果我想选择 T1 的id 列我会做一些类似 select ('T1.id') 的事情。
猜你喜欢
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 2014-04-01
  • 2017-12-11
  • 2019-10-26
  • 2012-10-13
  • 2016-10-08
  • 2020-01-26
相关资源
最近更新 更多