如何通过 Eloquent 查询原始数据?
我正在尝试在我的Laravel应用程序中执行查询,并且我想对我的查询使用正常结构。这个类要么使用Eloquent,所以我需要找到一些东西来做一个完全原始的查询。
可能是类似 .只有这样行不通。Model::query($query);
我正在尝试在我的Laravel应用程序中执行查询,并且我想对我的查询使用正常结构。这个类要么使用Eloquent,所以我需要找到一些东西来做一个完全原始的查询。
可能是类似 .只有这样行不通。Model::query($query);
你可以试试这个:
// query can't be select * from table where
Model::select(DB::raw('query'))->get();
例如:
Model::select(DB::raw('query'))
->whereNull('deleted_at')
->orderBy('id')
->get();
此外,您可以使用类似如下的方法(使用查询生成器):
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
此外,您可以尝试类似如下的方法(使用查询生成器):
$users = DB::select('select * from users where id = ?', array(1));
$users = DB::select( DB::raw("select * from users where username = :username"), array('username' => Input::get("username")));
在Laravel网站上查看更多相关信息。Raw-Expressions
可以使用函数将数组转换为 Eloquent 模型,该模型本身在内部用于将查询结果转换为模型。据我所知,文档中没有提到它。hydrate()
Laravel
以下代码等同于:$userModels = User::where('id', '>', $userId)->get();
$userData = DB::select('SELECT * FROM users WHERE id > ?', [$userId]);
$userModels = User::hydrate($userData);
hydrate()
函数定义为:\Illuminate\Database\Eloquent\Builder
/**
* Create a collection of models from plain arrays.
*
* @param array $items
* @return \Illuminate\Database\Eloquent\Collection
*/
public function hydrate(array $items) {}