[英]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.