Laravel 对另一个数据库的子查询 table

Laravel subquery to another database table

我需要在另一个数据库中不存在数据的地方进行子查询table。

我试过 DB::connection('dbconfigname')

第一个数据库vmysql tablename node

|id|名称|
|1 |山姆 |
|2 |杰克|
|3 |垫子 |
|4 |国王|

第二个数据库mysqltable名称node_tag

|id|node_id|
|1 |2 |
|2 |3 |

我的查询

$tag = 'true';
\DB::connection('vmysql')->table('node')->->when($tag, function($query) use($tag){
            if ($tag === 'true') {
                \DB::connection('mysql');
                $query->whereNOTIn('node.id',function($subquery){
                    $subquery->select(\DB::connection('mysql')->select(\DB::raw("select node_id from node_tag")));
     
                 });
            }
        })

Is it possible to subquery through another DB table

是的,只需要做一个连接查询:https://laravel.com/docs/7.x/queries#joins

或者,如果您有 eloquent 个模型,您可以

$nodeTags = NodeTag::distinct('node_id')->get()->toArray();
$nodesWithoutTags = Node::whereNotIn('id', $nodeTags)->get();