如何将纯 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
希望这对您有所帮助。
这个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
希望这对您有所帮助。