如何将纯 sql 查询传递给 laravel eloquent

how to pass a pure sql query to laravel eloquent

这个SQL:

SELECT COUNT(*) AS total_see_all_video
from users u
WHERE 7 = (SELECT COUNT(*) FROM lecciones_users lu WHERE lu.uuid = u.uuid)

我试过这段代码但没有用:

$data = LeccionesUsers::select(
    DB::raw('COUNT(*) AS total_ase_vis_videos'),
    DB::raw('where 7 = (SELECT COUNT(*) FROM lecciones_users where leccion_users.uuid = users.uuid)')
)
    ->join('users', 'lecciones_users.uuid', '=', 'users.uuid')
    ->get();

您的问题是您没有正确形成查询。你可以做 ->toSql(); 而不是 ->get(); 你会看到最后的 SQL (肯定和你第一次写的不一样)。

所以,你应该让这个有相同的 SQL:

$total_see_all_video = LeccionesUsers::whereRaw('7 = (SELECT COUNT(*) FROM lecciones_users where leccion_users.uuid = users.uuid)')
    ->count();

请尝试我的查询(还有 运行 ->toSql() 看看您是否有正确的 SQL)。

我仍然建议使用关系,这样做很奇怪 7 = query

您可以使用

DB::query()->fromSub('Raw sql query here..')

然后可以对 this.For 执行操作 您可以使用文档 fromSub

的参考资料

您还可以查看这个 convert this where break this query to parts to be used accordingly.您可以使用此部分作为参考: Laravel-Raw-Expressions

希望这对您有所帮助。