php - 按不工作的公司排序。请帮助我

标签 php mysql laravel

This is my DB query its not working when i used sortby company I have totally 48000 records but its shows only 18000 records. Sortby status,contact,city all are working fine. Any help will appreciate

public static function retreiveCandidates($status,$alpha=NULL,$dash=NULL,$statusid,$sortby=NULL){
    DB::enableQueryLog();

    $query = DB::table('candidates')->select('candidates.candidateid','candidates.firstname','candidates.lastname','candidates.imageext','candidates.middlename','candidates.personal_email','candidates.city','candidates.mobile','candidates.title_id','candidates.status','candidates.state','candidates.isverified','candidates.candidate_statusid','candidates.sendinvitation','candidates.ismerged','candidates.imagekey','candidates.candidatekey')->where('candidates.status',$status);
    if($alpha!=''){
        $query = $query->where('candidates.firstname', 'like', $alpha . '%');
    }
    if($statusid !=''){
        $query = $query->where('candidates.candidate_statusid',$statusid);
    }
    if($dash !=''){
        $result = $query->orderBy('candidates.created_at', 'desc')->limit(7)->get();
    }

    if($sortby == NULL){
        $query = $query->orderBy('candidates.firstname', 'asc') ;
    }elseif($sortby == 'company'){
        $query = $query->join('candidates_company','candidates_company.candidateid','=','candidates.candidateid')->join('company','company.companyid','=','candidates_company.companyid')->where('candidates_company.status','1')->groupBy('candidates.candidateid')->orderBy('company.company', 'asc')->orderBy('candidates.candidateid', 'asc')  ;
    }elseif($sortby == 'status'){
           $query = $query->join('candidate_status','candidate_status.statusid','=','candidates.candidate_statusid')->orderBy('candidate_status.statusorder', 'asc') ;  
    }elseif($sortby == 'contact'){
        $query = $query->orderBy('candidates.firstname', 'asc');            
    }elseif( $sortby == 'city'){            
        $query = $query->orderBy('candidates.city', 'asc') ;
    }elseif( $sortby == 'state'){           
        $query = $query->orderBy('candidates.state', 'asc') ;
    }

    $result = $query->paginate(PAGELIMIT);
    $d= DB::getQueryLog();
    return $result;     
}

This What I get while printing dbquery

    Array
(
    [0] => Array
        (
            [query] => select count(*) as aggregate from `rsi_candidates` inner join `rsi_candidates_company` on `rsi_candidates_company`.`candidateid` = `rsi_candidates`.`candidateid` inner join `rsi_company` on `rsi_company`.`companyid` = `rsi_candidates_company`.`companyid` where `rsi_candidates`.`status` = ? and `rsi_candidates_company`.`status` = ? group by `rsi_candidates`.`candidateid`
            [bindings] => Array
                (
                    [0] => 1
                    [1] => 1
                )

            [time] => 1036.83
        )

    [1] => Array
        (
            [query] => select `rsi_candidates`.`candidateid`, `rsi_candidates`.`firstname`, `rsi_candidates`.`lastname`, `rsi_candidates`.`imageext`, `rsi_candidates`.`middlename`, `rsi_candidates`.`personal_email`, `rsi_candidates`.`city`, `rsi_candidates`.`mobile`, `rsi_candidates`.`title_id`, `rsi_candidates`.`status`, `rsi_candidates`.`state`, `rsi_candidates`.`isverified`, `rsi_candidates`.`candidate_statusid`, `rsi_candidates`.`sendinvitation`, `rsi_candidates`.`ismerged`, `rsi_candidates`.`imagekey`, `rsi_candidates`.`candidatekey` from `rsi_candidates` inner join `rsi_candidates_company` on `rsi_candidates_company`.`candidateid` = `rsi_candidates`.`candidateid` inner join `rsi_company` on `rsi_company`.`companyid` = `rsi_candidates_company`.`companyid` where `rsi_candidates`.`status` = ? and `rsi_candidates_company`.`status` = ? group by `rsi_candidates`.`candidateid` order by `rsi_company`.`company` asc, `rsi_candidates`.`candidateid` asc limit 10 offset 0
            [bindings] => Array
                (
                    [0] => 1
                    [1] => 1
                )

            [time] => 454.11
        )

)

最佳答案

建议将来引用时,使用“= =”而不是“==”,第二个在一些最尴尬的情况下会产生 true。

进入问题,您的搜索仅

where('candidates_company.status','1')

这可能会缩小结果的范围,而在没有实际看到表格的情况下,我无法确定这就是问题所在,但除了减少检索结果的数量之外,我真的看不到任何其他东西。

关于php - 按不工作的公司排序。请帮助我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49664841/

相关文章:

c# - 使用 MySQL 查询填充列表<string>

php - 如何让 Eloquent 将子集合推送到其父集合中?

php - Woocommerce 设置运输方式,获取运费

php - 使用子查询和Having优化SQL

php - Laravel mysql 内连接并从另一个表中选择特定字段

javascript - 将 ISO 8601 时间格式化为 Laravel View

laravel - Eloquent ORM 选择带有限制和列名的所有内容

PHP 数组键 - 如何显示?

php - 从表中获取多个条目

php - 提交POST表单时如何防止刷新页面错误?