はじめに
PHP及びLaravelにて、DBから値を取得する際に複数のWHERE句を1つのメソッドのようにまとめる方法を以下に記載する。
結論
以下ルールに則ることでメソッドと同じように利用が可能。
* 先頭にscopeを付与する
* 呼び出す際にはscopeを除外する
/ **
* 20歳以上の男性の名前を取得する
*/
public function getAdultMaleName()
{
return $this->
select('userName',)
->isAdultMale()
->get();
}
private function scopeIsAdultMale($query)
{
return $query
->where('age', '>=', 20)
->where('gender', '=', 1);
}