繁体   English   中英

如果满足多个条件之一,Laravel9如何连接两个表

[英]Laravel9 how to join two tables if one of many conditions is met

我有 2 张桌子,我想收集与发票 id 具有相同 invoice_id 的所有 coletes,或者如果 invoice_id = invoices storno_id

InvoicesID      Coletes.INVOICE_ID 
1                  1
                   1
                   1 

但是也

 Invoices.STORNO_ID      Coletes.INVOICE_ID
           1                        1
                                    1
                                    1

我的查询如下所示:

$data = DB::table('invoices')
->leftJoin('coletes','coletes.invoice_id','=','invoices.id')
->where('coletes.invoice_id','=',$id)
->orWhere('coletes.invoice_id','=','invoices.storno_id')
->get();

但它只返回带有 invoice_id = $id 的 coletes,而不是具有与 invoices,storno_id 相同的 invoice_id 的那些

在传统的 SQL 查询中,您可以从多个表中进行选择,例如from invoices, coletes中选择。 这可以通过在查询生成器中使用DB::raw()来完成。 然后添加连接逻辑,改为 where 逻辑。

DB::table(DB::raw('invoices, coletes'))
    ->where('coletes.invoice_id', 'invoices.id')
    ->where(function($query) use ($id) {
        $query->where('coletes.invoice_id', $id)
            ->orWhere('coletes.invoice_id', 'invoices.storno_id')
    })->get();

暂无
暂无

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

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