Как сделать необработанный запрос SQL с Eloquent DB :: connection? - PullRequest
0 голосов
/ 01 апреля 2020

Я пишу начальное число в Laravel, которое импортирует данные из старой схемы.

Поэтому я хотел бы сделать что-то вроде:

DB::connection('old')
    ->raw('SELECT * FROM users INNER JOIN foo ON...')
    ->each(function($user) {
})

К сожалению, кажется, что get(), all() или each() не существует.

DB::connection('old')->raw(...) возвращает мне Illuminate\Database\Query\Expression

Проблема с

DB::connection('old')
   ->table('users') 
   ->select(DB::raw('SELECT * FROM users INNER JOIN..'))
   ->get()

заключается в том, что я получаю синтаксическую ошибку SELECT * FROM users from users. Вот почему я не хочу выбирать таблицу, а вместо этого выполнить необработанный запрос к old схеме.

1 Ответ

1 голос
/ 01 апреля 2020

Используйте Query Builder, как это, он вернет коллекцию с помощью stdClass.

Таким образом, вы можете применить each к коллекции:

DB::connection('old')
   ->table('users')
   ->join('foo', '...')
   ->get()
   ->each(function($user) {}});

Или использовать DB::select(), он вернет массив с stdClass, и используйте для него foreach:

$users = DB::connection('old')->select('SELECT * FROM users INNER JOIN foo ON...');

foreach($users as $user) {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...