Php 如何使用雄辩的DB::connection执行原始SQL查询?

Php 如何使用雄辩的DB::connection执行原始SQL查询?,php,laravel,eloquent,Php,Laravel,Eloquent,我正在用Laravel编写一个种子,从旧模式导入数据 所以我想做一些类似的事情: DB::connection('old') ->raw('SELECT * FROM users INNER JOIN foo ON...') ->each(function($user) { }) 不幸的是,它似乎既没有得到,也没有全部存在 数据库::连接'old'->raw。。。返回一个\Database\Query\Expression 问题在于 DB::connection('

我正在用Laravel编写一个种子,从旧模式导入数据

所以我想做一些类似的事情:

DB::connection('old')
    ->raw('SELECT * FROM users INNER JOIN foo ON...')
    ->each(function($user) {
})
不幸的是,它似乎既没有得到,也没有全部存在

数据库::连接'old'->raw。。。返回一个\Database\Query\Expression

问题在于

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

是因为我从用户中得到一个语法错误SELECT*FROM users FROM users。这就是为什么我不想选择一个表,而是在旧模式上执行一个原始查询。

像这样使用查询生成器,它将返回带有stdClass的集合

因此,您可以将每个应用于集合:

DB::连接“旧” ->表“用户” ->加入'foo','…' ->得到 ->每个函数$user{}; 或者使用DB::select,它将返回带有stdClass的数组,并使用foreach:

$users=DB::connection'old'->选择'select*FROM users internal JOIN foo ON…'; foreach$users作为$user{ }
您是否检查过:您是否尝试过不调用table方法?DB::connection'old'->selectDB::raw'SELECT*FROM users internal JOIN..'因此,如果我的原始查询不是SELECT,我仍然需要使用SELECT方法?@novox如果你想选择你需要的列,你可以使用它,但是在你的帖子中,你使用的是SELECT*,你不需要查询生成器的SELECT方法,它会自动选择*