2015-11-06 33 views
1

幾乎我係統上的每個表都有一個字段id_unity,用於控制註冊表來自哪個統一。在laravel雄辯選擇上添加附加條件

我想知道是否有可能改變從雄辯->get()->lists()方法來添加

->where('id_unity',Session::get('unity'); 

每一個選擇之前,所以我就這樣做:

Products::all(); //and that actually will be 
Products::where('id_unity',Session::get('unity')); 

有人嗎? ;)

+2

退房全球範圍 – RDelorier

回答

3

您可以使用查詢範圍:

public function scopeGetAll($query) 
{ 
    return $query->where('id_unity', Session::get('unity'))->get(); 
} 

你那麼靜態調用它不帶「範圍」前綴:

Products::getAll(); 

如果你想讓它適用於所有車型,只是創建一個模型擴展的Base模型類,在其中定義該函數。

Base.php

use Illuminate\Database\Eloquent\Model; 
use Session; 

class Base extends Model { 

    public function scopeGetAll($query) 
    { 
     return $query->where('id_unity', Session::get('unity'))->get(); 
    }  
} 

Products.php

use Base; 
class Products extends Base { 

} 
+1

完美!!!!完全按照我需要的方式工作!只需等待4分鐘即可選擇您的答案!非常感謝 ;) – wiLLiamcastrO