我有一个表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)和.之类的函数。
谢谢
发布于 2014-05-16 18:13:48
您的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);
}您可以使用以下代码(“select”)只选择day列:
return is_null($day) ? $query->select('day') : $query->whereDay($day)->select('day');同样,您也可以声明month和year的其他函数。
https://stackoverflow.com/questions/23700937
复制相似问题