[英]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.