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();
我需要在另一个数据库中不存在数据的地方进行子查询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();