或者在laravel查询生成器中使用子查询

时间:2018-02-13 11:13:54

标签: php mysql laravel laravel-5 laravel-5.4

如何使查询构建器跟随查询

SELECT * FROM `rad_nas` WHERE nas_assigned = ".$id." 
OR nas_assigned IN 
(select franchise_id from rad_franchise_has_parent where parent_id=".$id." )
OR nas_id IN 
(select  fra_nas_id  from rad_franchise_has_nas where franchise_nas_id=".$id.")

1 个答案:

答案 0 :(得分:1)

检查文档以供将来使用,并且不要发布问题,并希望其他人为您编写或调试代码,这是您的工作,我们正在为您提供指导,但这是一个完整的示例,当您将其转换为Query Builder

$results = DB::table('rad_nas')->where('nas_assigned', $id)
             ->orWhereIn('nas_assigned', function($query) use ($id) {
                  $query->select('franchise_id')
                        ->from('rad_franchise_has_parent')
                        ->where('parent_id', $id);
             }
             ->orWhereIn('nas_id', function($query) use ($id) {
                  $query->select('fra_nas_id')
                        ->from('rad_franchise_has_nas')
                        ->where('franchise_nas_id', $id);
             }

正如@DanielO指出的那样

  

Raw语句将作为字符串注入到查询中,因此您应该非常小心,不要创建SQL注入漏洞。