Laravel错误DB::raw中存在语法错误或访问冲突


Laravel Error Syntax error or access violation in DB::raw

我想获得与propinsID和agamaID相同的pegawai计数的agama这是我的控制器,但我得到了这个错误错误语法错误或访问冲突请帮帮我…抱歉英语不好

public function getPropinsi($id)
{
    $this->data['query'] =  DB::table("propinses")->where("id",$id)->first();
    $this->data['title'] = $this->data['query']->Propinsi;
    $this->data['count_satker'] = DB::table('satkerfakes')->where('PropinsiID',$id)->count(); 
    $this->data['pegawai'] = Pegawais::where('PropinsiID',$id);
    $this->data['agama'] = DB::table("agamas")
                                    ->select("agamas.Agama",DB::raw("(select count(*) 
                                        from pegawais 
                                        where pegawais.PropinsiID = $id
                                        where pegawais.AgamaID = agamas.AgamaID) as total_pegawai"))->get();
    return view('index.propinsi',$this->data);
}

此处至少有2个errros:

$this->data['pegawai'] = Pegawais::where('PropinsiID',$id);

你想在这里实现什么?如果你想获得这个id的记录,你应该使用:

$this->data['pegawai'] = Pegawais::where('PropinsiID',$id)->get();

$this->data['pegawai'] = Pegawais::where('PropinsiID',$id)->first();

这取决于您是否想要获得一张或多张唱片。

在您的查询中,您使用:

select count(*)  from pegawais 
    where pegawais.PropinsiID = $id
    where pegawais.AgamaID = agamas.AgamaID) as total_pegawai

不能使用where两次,应使用AND运算符:

select count(*)  from pegawais 
    where pegawais.PropinsiID = $id
    AND pegawais.AgamaID = agamas.AgamaID) as total_pegawai