Laravel不在sqbquery

时间:2016-05-24 06:49:41

标签: sql laravel eloquent

如何在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 

3 个答案:

答案 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();