【问题标题】:How to write Laravel orderBy query?如何编写 Laravel orderBy 查询?
【发布时间】:2020-06-15 20:14:11
【问题描述】:

我在 laravel 中试过了,但是没用。

$doctor_daily=ReportDoctorCompanyDailyTestModal::select('test_id',DB::raw('SUM(test_price) as num'))
                                                       ->join('testing_types','report_doctor_company_daily_test.test_id','=','testing_types.id')
                                                       ->join('doctor','doctor.id','=','report_doctor_company_daily_test.doctor_id')
                                                       ->groupBy('test_id')
                                                       ->get();

如何在 Laravel 5.7 中编写这个 MySQL 查询?

SELECT
    report_doctor_company_daily_test.test_id,
    testing_types.testing_name,
    doctor.first_name,
    doctor.last_name,
    SUM( report_doctor_company_daily_test.test_price ) 
FROM
    testing_types
    INNER JOIN report_doctor_company_daily_test ON testing_types.id = report_doctor_company_daily_test.test_id
    INNER JOIN doctor ON report_doctor_company_daily_test.doctor_id = doctor.id 
GROUP BY
    testing_types.id

【问题讨论】:

  • 您的查询不包含ORDER BY 子句。

标签: php mysql laravel


【解决方案1】:

orderBy 的问题不清楚。根据您的问题:

如何在 Laravel 5.7 中编写这个 MySQL 查询?

SELECT
    report_doctor_company_daily_test.test_id,
    testing_types.testing_name,
    doctor.first_name,
    doctor.last_name,
    SUM( report_doctor_company_daily_test.test_price )  FROM
    testing_types
    INNER JOIN report_doctor_company_daily_test ON testing_types.id = report_doctor_company_daily_test.test_id
    INNER JOIN doctor ON report_doctor_company_daily_test.doctor_id = doctor.id  GROUP BY
    testing_t
ypes.id

答案:

$test = ReportDoctorCompanyDailyTestModal::select(
        'report_doctor_company_daily_test.test_id',
        'testing_types.testing_name',
        'doctor.first_name',
        'doctor.last_name',
        DB::raw('SUM(report_doctor_company_daily_test.test_price)')
    )
    ->join('report_doctor_company_daily_test', 'testing_types.id', '=', 'report_doctor_company_daily_test.test_id')
    ->join('doctor', 'report_doctor_company_daily_test.doctor_id', '=', 'doctor.id')
    ->groupBy('testing_types.id');

dd($test->toSql());

结果:

select 
     `report_doctor_company_daily_test`.`test_id`, 
     `testing_types`.`testing_name`, 
     `doctor`.`first_name`, 
     `doctor`.`last_name`, 
     SUM(report_doctor_company_daily_test.test_price) 

from 
    `testing_types` 

inner join `report_doctor_company_daily_test` 
    on `testing_types`.`id` = `report_doctor_company_daily_test`.`test_id` 

inner join `doctor` 
    on `report_doctor_company_daily_test`.`doctor_id` = `doctor`.`id` 

group by `testing_types`.`id`

【讨论】:

    【解决方案2】:

    使用可以使用->orderBy();声明。

    例如;

    $doctor_daily=ReportDoctorCompanyDailyTestModal()->orderBy()->get();
    

    然后就可以按升序获取数据了。如果要降序,可以使用

    ->orderBy('id','DESC');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2016-04-01
      相关资源
      最近更新 更多