where子句laravel中的内部查询

fslejnso  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(517)

我有一个数据库,其中有两个表 driver_company_map 以及 company 我要做的就是 company_codedriver_company_map 表,并将其传递到对其执行的另一个查询的where子句中 company 表中的两个单独的查询都是这样工作的

$result = DB::connection($this->masterDb)->table('driver_company_map')
        ->where('driver_code', $driverCode) //i get the $driverCode from function parameter
        ->select('company_code')
        ->first();
        $companyCode = $result->company_code;

我用上面的 $companyCode 在下面的查询中

$result = DB::connection($this->masterDb)->table('company')
        ->where('code', $companyCode)
        ->select('db_connection')
        ->first();
        $clientDb = $result->db_connection;

上面的逻辑工作得很好,但我想两者都作为嵌套查询我尝试了,但没有给出正确的结果下面是我的代码

$result = DB::connection($this->masterDb)->table('company')
        ->where('code', function($companyCode_query){
            $companyCode_query->select('company_code')
            ->from('driver_company_map')
            >where('driver_code', $driverCode);
        })->get()
        ->select('db_connection')
        ->first();
        $clientDb = $result->db_connection;
pod7payv

pod7payv1#

试试这个:

$result = DB::connection($this->masterDb)->table('company')
    ->select('db_connection')
    ->join('driver_company_map', 'company.code', 'driver_company_map.company_code')
    ->where('driver_company_map.driver_code', $driverCode)
    ->first();

请参阅:https://laravel.com/docs/5.6/queries#joins

相关问题