Laravel подзапрос к другой таблице базы данных - PullRequest
0 голосов
/ 07 апреля 2020

Мне нужно выполнить подзапрос, если данные не существуют в другой таблице базы данных.

Я пытался использовать DB::connection('dbconfigname')

Первая БД v mysql имя таблицы узел

| id | name |
| 1 | sam |
| 2 | jack |
| 3 | mat |
| 4 | king |

Второй DB mysql имя таблицы 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")));

                 });
            }
        })

Можно ли выполнить подзапрос через другую таблицу БД

1 Ответ

0 голосов
/ 07 апреля 2020

Да, просто нужно сделать запрос на соединение: https://laravel.com/docs/7.x/queries#joins

В качестве альтернативы, если у вас есть красноречивые модели, вы можете сделать

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