![](/img/trans.png)
[英]How do I convert raw SQL query into laravel querybuilder or eloquent
[英]Laravel querybuilder select array with raw query
我有一個查詢,涉及選擇多列的最新日期/值。 我用過mysql greatest
功能。 我的問題是如何在已經有 select 語句的查詢構建器中使用或插入它。
這是我試過的查詢
$ses = DB::table('ses_contracts')
->join('ses_worker','ses_contracts.id','ses_worker.ses_id')
->join('corporates','corporates.id','ses_contracts.outsourcer')
->select([
'corporates.corpname as outsourcer',
'ses_contracts.outsourcer_manager_name as manager_name',
'ses_worker.worker_name as worker_name',
'ses_worker.sesnum1 as sesnum1',
'ses_worker.sesnum2 as sesnum2',
'ses_contracts.work_date1 as start',
// this is the one i want the max_date for the 6 columns.
DB::raw('SELECT GREATEST (work_date1,work_date2,work_date3,work_date4,work_date5,work_date6) as end from ses_contracts')
// end
])
->get();
die($ses);
部分結果是這個
{
"outsourcer": "㈱daOn",
"manager_name": "黃",
"worker_name": "4",
"sesnum1": "MS-JAN-",
"sesnum2": 1,
"start": "2021-10-29"
}
我想要的是
{
"outsourcer": "㈱daOn",
"manager_name": "黃",
"worker_name": "4",
"sesnum1": "MS-JAN-",
"sesnum2": 1,
"start": "2021-10-29",
"end": "2021-10-30" // supposed oct 30 is latest date of the 6 columns
}
當我在 mysql 或DB::select
語句中嘗試查詢時。 有用。 我只是不知道如何將它添加到現有的選擇中。 希望有人能幫忙。 謝謝你們。
使用selectRaw
。
$ses = DB::table('ses_contracts')
->join('ses_worker', 'ses_contracts.id', 'ses_worker.ses_id')
->join('corporates', 'corporates.id', 'ses_contracts.outsourcer')
->select([
'corporates.corpname as outsourcer',
'ses_contracts.outsourcer_manager_name as manager_name',
'ses_worker.worker_name as worker_name',
'ses_worker.sesnum1 as sesnum1',
'ses_worker.sesnum2 as sesnum2',
'ses_contracts.work_date1 as start'
])
->selectRaw('GREATEST(ses_contracts.work_date1, ses_contracts.work_date2, ses_contracts.work_date3, ses_contracts.work_date4, ses_contracts.work_date5, ses_contracts.work_date6) as end')
->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.