首页 > 解决方案 > where 子句 laravel 中的内部查询

问题描述

我有一个数据库,其中有两个表driver_company_mapcompany我所做的是我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;

标签: mysqllaravellaravel-query-builder

解决方案


尝试这个:

$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


推荐阅读