Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将sql查询写入laravel_Php_Sql_Laravel_Eloquent - Fatal编程技术网

Php 如何将sql查询写入laravel

Php 如何将sql查询写入laravel,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,我有一个类似这样的sql查询,我想把它转换成laravel,我该怎么做 我已经试过了,但我对其中和加入 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 =

我有一个类似这样的sql查询,我想把它转换成laravel,我该怎么做

我已经试过了,但我对
其中
加入

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();
函数内部的联接中存在错误。试试上面的代码

您还必须仅在查询结束时使用
get()
,而不能在函数本身内部使用。

DB query way

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();

您是否尝试过DB Raw查询?如果您将其“转换”为Laravel,您将获得什么?查询生成器将构造与您相同的查询。只需使用
DB::select()
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();