2014-05-16 9 views
0

id, day, month, year 열이있는 Schedule 테이블이 있습니다. Eloquent을 직접 사용하여 day, monthyear에 대한 쿼리 함수를 정의했습니다.Laravel Eloquent 저장소 쿼리 작성

return Schedule::day($day) 
       ->month($month) 
       ->year($year) 
       ->get(); 

나는 때때로 모든 일, 또는 몇 달, 또는 몇 년 싶어 : 나는 다음 사용하여 일정을 얻을 수 있습니다 내가 저장소를 만들고 싶었

return Schedule::day($day) 
       ->get() 

을, 다음과 같은 인터페이스를 구현 :

ScheduleRepositoryInterface

<?php 
namespace CLG\Storage\Schedule; 

interface ScheduleRepositoryInterface 
{ 
    public function day($day); 
    public function month($month); 
    public function year($year); 
    public function get(); 
} 

이제 같은 방법으로 쿼리를 작성할 수 있도록 구현하는 방법을 모르겠습니다. 나는 getDay($day) 또는 getDayAndMonth($day, $month)과 같은 기능을 만들고 싶지 않습니다 ....

감사

답변

0

귀하의 interface해야한다 :

public function scopeDay($query, $day = null) 
{ 
    return is_null($day) ? $query : $query->whereDay($day); 
} 

당신은 사용할 수 있습니다 다음 코드 ('선택') 만 선택 :

interface ScheduleRepositoryInterface 
{ 
    public function day($day = null); 
    public function month($month = null); 
    public function year($year = null); 
} 

귀하의 Concrete Class 구현이이 같은 수 day 칼럼 :

return is_null($day) ? $query->select('day') : $query->whereDay($day)->select('day'); 

같은 방법으로 monthyear에 다른 기능을 선언 할 수 있습니다.