2013-01-11 46 views
0

我使用擴展generic_model的模型,這反過來擴展了雄辯。 (所以我有幾個使用的crud方法已經被設置爲繼承)。laravel設置自動where子句

很多我用調用軟刪除的表,這需要哪里哪里刪除= 0

的條款有沒有一種方法,使以這樣的方式,這個where子句自動包含在laravel行爲所有查詢和所有查詢都與彼此相關的對象相關聯。

例如

頁其中id = 5,刪除= 0 然後 圖像,其中PAGE_ID = 5和刪除= 0

回答

6

如果你使用laravel 3這就是你需要

您的手機型號

public function query() 
{ 

    $query = parent::query(); 

    $query->where('deleted','=','0'); 

    return $query; 
} 

如果你使用laravel 4只改變方法查詢newQuery

public function newQuery() 
{ 

    $query = parent::newQuery(); 

    $query->where('deleted','=','0'); 

    return $query; 
} 

reference

+1

嗨,newQuery不適用於Laravel 4,你有想法如何在Laravel 4中做到這一點? – edi9999

+0

我修改了它來支持Laravel 4 – AMIB

1

在關係中,你可以在你的回報加上where_clause:

public function pages() 
{ 
    return $this->has_many('Page')->where_deleted(0); 
} 

在你型號,您可以添加類似:

public static function active() 
{ 
    return self::where_delete(0)->get(); 
} 

使用Page::active()代替Page::all() (或者你可以刪除模型的功能->get(),所以你仍然可以進一步修改您的查詢(Page::active()->order_by('name')