如何在Laravel Eloquent
中编写以下原始查询SELECT *
FROM document_types
WHERE document_types.id
NOT IN (
SELECT enterprise_document.document_id
FROM enterprise_document
WHERE document_types.id = enterprise_document.document_id
AND fy_id = 1 AND enterprise_id=1
)
AND document_category_id=2
答案 0 :(得分:1)
以下是此问题的解决方案。最后,我参考了Laravel文档。
\DB::table('document_types')->whereNotIn('document_types.id', function($query){
$query->select('enterprise_document.document_id')
->from('enterprise_document')
->whereRaw('document_types.id=enterprise_document.document_id')
->where('fy_id', 1)
->where('enterprise_id', 1);
})->where('document_category_id', 2)
->get();
答案 1 :(得分:0)
您也可以尝试以下代码
$docids=DB::table('enterprise_document')
->join('document_types', 'enterprise_document.document_id', '=', 'document_types.id')
->select('enterprise_document.document_id')
->where('enterprise_document.fy_id ', '=', 1);
->where('enterprise_document.enterprise_id', '=', 1);
->get();
$document_types = DB::table('document_types')
->whereNotIn('id', $docids)->get();
答案 2 :(得分:0)
试试这个:
$result=DB::table('document_types')
->select('document_types.*')
->leftJoin('enterprise_document', 'enterprise_document.document_id', '=', 'document_types.id')
->where('document_types.document_category_id', '=', 2)
->where('enterprise_document.fy_id ', '=', 1);
->where('enterprise_document.enterprise_id', '=', 1);
->whereNotIn('document_types.id','enterprise_document.document_id')
->get();