0
我對laravel 5個新的,我是想增加多個作用域是這樣的:如何在laravel多個範圍添加到DB ::表5.4
$projects = DB::table('projects AS p')->select('p.project_name','c.name_country', 'p.date_project','s.name_status','p.rejected_date')
->join('country AS c','c.id','=','p.id_country')
->join('status AS s','s.id','=','p.id_status')
->where('p.active','=','1');
$projects = $this->scopeCountry($projects , $country);
$projects = $this->scopeStatus($projects , $status);
$projects->get();
return view('search.ajax')->with('projects', $projects);
}
public function scopeCountry($query, $country){
return is_null($country) ? $query : $query->where('p.id_country','=',$country);
}
public function scopeStatus($query, $status){
return is_null($status) ? $query : $query->where('p.id_status','=',$status);
}
}
它給了我這個錯誤:在 ErrorException 26864233b0cd26a1055b66c2645628be451523fd.php線4:未定義的屬性:照亮\數據庫\的MySqlConnection :: $ PROJECT_NAME(查看:/home/vagrant/Code/projects/resources/views/search/ajax.blade.php)
我注意到,這個錯誤不會顯示出來,如果我像這樣修改它:
//$projects = $this->scopeStatus($status);
//$projects->get();
然後我添加的get()函數中:
public function scopeCountry($query, $country){
return is_null($country) ? $query->get() : $query->where('p.id_country','=',$country)->get();
}
爲什麼我沒有在一個範圍內添加查詢和我使用is_null($國家)的原因,是因爲在情況這些變量($國家,$狀態)爲空只應執行主查詢:
$projects = DB::table('projects AS p')->select('p.project_name','c.name_country', 'p.date_project','s.name_status','p.rejected_date')
->join('country AS c','c.id','=','p.id_country')
->join('status AS s','s.id','=','p.id_status')
->where('p.active','=','1');
而且我也有類似的範圍添加到另一個領域,也許有另一種方式來做到這一點,我不是當然。謝謝。