簡體   English   中英

如何將 sql 查詢寫入 Laravel

[英]how to write sql query to laravel

我有一個這樣的 sql 查詢,我想將它轉換為 Laravel,我該怎么做?

我試過了,但我對在whereinjoin感到困惑

sql查詢

SELECT MIN(StartFrom) as StartFrom,MAX(EndTo) as EndTo from appointmentsettings 
WHERE day=1 
and PersonID IN (
    SELECT p.id
    FROM users p
        JOIN appointmentsettings aps ON p.id = aps.PersonID 
    WHERE p.active=1 AND aps.CompanyID = 1 OR aps.PersonID IN(
        SELECT cps.user_id 
            from companypersonstructs cps
            WHERE cps.CompanyID =1          
    )  group by aps.PersonID        
)
and active=1

這是我嘗試的

Appointmentsetting::select('StartFrom', 'EndTo')
->min('StartFrom')
->max('EndTo')
->where(['Day'=>$day, 'Active'=>1])
->whereIn('PersonID', function ($query) use ($id) {
    $query->select('p.id')
          ->from('users as p')
            $query->join('appointmentsettings as aps', 'p.id', '=', '')
        ->where(["user_id" => $id, 'Active' => 1])->get();
        })->orderBy('id')->get();
Appointmentsetting::select('StartFrom', 'EndTo')
    ->min('StartFrom')
    ->max('EndTo')
    ->where(['Day'=>$day, 'Active'=>1])
    ->whereIn('PersonID', function ($query) use ($id) {
        $query->select('p.id')
            ->from('users as p')
            ->join('appointmentsettings as aps', 'p.id', '=', '')
             ->where(["user_id" => $id, 'Active' => 1]);
        })->orderBy('id')->get();

您在函數內部的連接中出錯。 試試上面的代碼。

此外,您必須僅在查詢結束時使用get() ,而不能在函數內部使用。

數據庫查詢方式

DB::table('appointmentsettings')->join('users','p.id','=','')
->select(DB::raw('MIN(StartFrom) as StartFrom','Max(EndTo) as EndTo'))
->where([['user_id',$id],['Active','1']])
->groupBy('appointmentsettings.PersonID)
->orderBy('id','ASC')
->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM