【发布时间】:2018-09-28 13:56:09
【问题描述】:
最近我在使用 PHP Laravel 和 PostgreSQL,但我不知道如何将这个 sql 脚本转换为 eloquent。
SELECT v_extensions.extension,
(
SELECT COUNT(v_xml_cdr.uuid) FROM v_xml_cdr WHERE v_xml_cdr.extension_uuid = v_extensions.extension_uuid AND start_stamp >= @startDate AND end_stamp <= @endDate
)
FROM v_extensions ORDER BY count DESC LIMIT 1
我正在尝试做这样的事情,但我不知道如何写出来自 XmlCdr 的 extension_uuid 等于来自 Extension 的 extension。这些列也没有通过数据库上的外键链接。
$call = Extension::select('extension', function(){
XmlCdr::where('extension_uuid', )
})->limit(10)->get();
找到了一种使用DB::select的方法
$query = 'SELECT v_extensions.extension, (SELECT COUNT(v_xml_cdr.uuid) FROM v_xml_cdr WHERE v_xml_cdr.extension_uuid = v_extensions.extension_uuid) FROM v_extensions LIMIT 1';
$result = DB::select($query);
【问题讨论】:
-
你为什么不改用
\DB::raw()? -
@AzisAbdulBachar 我做了这样的事情` $all = DB::table('v_extensions')->select('extension, (SELECT COUNT(v_xml_cdr.uuid) FROM v_xml_cdr WHERE v_xml_cdr.extension_uuid = extension_uuid AND start_stamp >= @startDate AND end_stamp get(); ` 但它在我使用点('.')的地方抛出错误
-
@AzisAbdulBachar 用 DB::select() 做到了
标签: php laravel laravel-5 eloquent laravel-5.5