有没有办法将原始查询映射到模型

rap*_*2-h 4 php laravel eloquent laravel-5 laravel-5.6

我有一个复杂的原始SQL查询,我不想将其转换为查询生成器。有没有办法将查询结果映射到模型?

简而言之,我有这种查询:

SELECT users.* FROM users
WHERE exists (super_long_raw_query)
AND many_more_raw_where_clauses
ORDER BY something_complex
etc;
Run Code Online (Sandbox Code Playgroud)

它仅返回一个模型(对应于一个模型的表)中的列。

将其转换为“ Laravel查询生成器”查询将是可怕的并且不可读

User::where(/* ... */)
    ->whereExists(function() { /* super complex callback */ } )
    ->etc(/* ... */)
Run Code Online (Sandbox Code Playgroud)

原始查询更易于阅读(在这种情况下)。

有没有办法将原始查询映射到模型?(假设它仅返回特定模型的列)

附注:这是一个原始查询使用查询参数(?:something),因为我不想打针。

Soh*_*415 5

使用 fromQuery()

$query = \Illuminate\Support\Facades\DB::raw('select * from users');
$users = \App\User::fromQuery($query, []);
Run Code Online (Sandbox Code Playgroud)