【问题标题】:count another table as name in Laravel Eloquent在 Laravel Eloquent 中计算另一个表作为名称
【发布时间】:2019-02-07 03:41:39
【问题描述】:

这个 sql 查询有效

SELECT 
    users.*,
    (SELECT COUNT(*) FROM villaaz.elanlar
        WHERE elanlar.user_id = villaaz.users.id) AS elan_sayi
FROM villaaz.users 
INNER JOIN villaaz.elanlar on users.id = elanlar.user_id
WHERE elanlar.country_id=2 AND deleted_at IS NULL
GROUP BY users.id 
ORDER BY users.id ASC;

我想用 Laravel 编写它,注意:这是我的 Laravel 代码的重要部分,问题出在此处,其余部分有效,粗线是问题。

$users = User::join('elanlar', 'elanlar.user_id', 'users.id')
    ->select([
       'users.*', 
        DB::select(DB::raw('COUNT(*) as elan_sayi FROM elanlar WHERE elanlar.user_id = users.id '))
    ])->where('elanlar.country_id', 19)->groupBy('users.id);

错误是:DB::select(DB::raw('COUNT(*) as elan_sayi FROM elanlar WHERE elanlar.user_id = users.id '))

【问题讨论】:

  • 浏览器显示哪个错误?
  • 你忘了select 里面的DB::raw。不应该是这样吗DB::select(DB::raw('select COUNT(*) as elan_sayi FROM elanlar WHERE elanlar.user_id = users.id '))
  • sql语法错误

标签: php sql laravel count eloquent


【解决方案1】:

DB::select() 执行查询。您必须删除它并将SELECT 添加到原始 SQL:

$users = User::join('elanlar', 'elanlar.user_id', 'users.id')
    ->select([
       'users.*', 
        DB::raw('(SELECT COUNT(*) FROM elanlar WHERE elanlar.user_id = users.id) as elan_sayi')
    ])->where('elanlar.country_id', 19)->groupBy('users.id');

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多