繁体   English   中英

如何在 Laravel 5.0 中使用外部全连接?

[英]How to use outer full join in laravel 5.0?

这是我的控制器:

public function lihatpesanansemua() //ajax
{
    if(Request::ajax())
    {
        $hasil = DB::table('pesanan')->join('pemesan','pemesan.id', '=', 'pesanan.idpemesan')->join('komputer', 'komputer.id' ,'=', 'pesanan.idkomputer')
        ->select('pesanan.id', 'pemesan.nama', 'pesanan.tglpesan', 'pesanan.jampesan', 'pesanan.jamakhir', 'komputer.nama_komputer', 'komputer.lantai', 'komputer.Kelas')
        ->orderby('pesanan.id', 'asc')
        ->get();
        $hasil = json_encode($hasil);
        return $hasil;
    }
}

这就是内连接。 如何更改为全外连接? 谢谢,对不起我的英语不好

我不知道您的查询究竟想要实现什么,以及您需要完全外连接的位置,但我将通过说 MySQL 没有内置支持完全外连接来开始这个答案。 基于这个 SO question ,我们可以找到一种替代方法来编写以下查询:

SELECT * FROM t1
FULL OUTER JOIN t2
    ON t1.id = t2.id

这可以被改写为UNION左的联接和右连接:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

在 Laravel 中,我们可以编写以下代码来表示上述全外连接:

$second = DB::table('t2')
             ->rightJoin('t1', 't1.id', '=', 't2.id')

$first = DB::table('t1')
            ->leftJoin('t2', 't1.id', '=', 't2.id')
            ->unionAll($first)
            ->get();

同样,我不知道为什么您认为需要两个外部联接,但无论如何您都应该能够调整上述代码和查询并将其用于您的情况。

参考:

  • 链接到 MySQL 中的完全外部联接:MySQL 中的完全外部联接
  • 链接到 Laravel 5.3 查询构建器文档: https ://laravel.com/docs/5.3/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM