Php 如何使用雄辩的DB::connection执行原始SQL查询?
我正在用Laravel编写一个种子,从旧模式导入数据 所以我想做一些类似的事情: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('
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方法,它会自动选择*