我有一个表Schedule
,其中包含以下列:id, day, month, year
。直接使用Eloquent
,我为day
,month
和year
定义了查询函数。然后我可以使用以下方式获取时间表:
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 :(得分:0)
您的interface
应该是:
interface ScheduleRepositoryInterface
{
public function day($day = null);
public function month($month = null);
public function year($year = null);
}
您的Concrete Class
实施可能是这样的:
public function scopeDay($query, $day = null)
{
return is_null($day) ? $query : $query->whereDay($day);
}
您可以使用以下代码(“选择”)仅选择day
列:
return is_null($day) ? $query->select('day') : $query->whereDay($day)->select('day');
同样,您可以为month
和year
声明其他功能。