繁体   English   中英

Laravel-更清洁的数据库查询

[英]Laravel - cleaner DB queries

我只是在寻找一种更清洁的替代方法,而我在网上找不到任何东西。

Timetable::where('weekday', '0')->update(['times' => $weekdays[0]]);
Timetable::where('weekday', '1')->update(['times' => $weekdays[1]]);
Timetable::where('weekday', '2')->update(['times' => $weekdays[2]]);
Timetable::where('weekday', '3')->update(['times' => $weekdays[3]]);
Timetable::where('weekday', '4')->update(['times' => $weekdays[4]]);
Timetable::where('weekday', '5')->update(['times' => $weekdays[5]]);
Timetable::where('weekday', '6')->update(['times' => $weekdays[6]]);

您可以将其放在一个简单的for循环中,但这并不能使代码更简洁(更短)。 看看Eloquent的范围功能。 您可以使它像这样:

class Timetable extends Eloquent {

    public function scopeWeekday($query, $day)
    {
        $query->where('weekday', $day);
    }

    public function updateTimes($weekday)
    {
        $data = array('times' => $this->weekdays[$weekday]);
        $this->update($data);
    }
}

我不知道$ weekdays中的数据是什么,但是您将使用这种范围和更新方法,如下所示:

Timetable::weekday(1)->updateTimes(1);

我确实意识到这并不短,但是它肯定更干净并且可读性更高。 您甚至可以将范围与更新结合在一起,但是我希望这能激发您清理代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM