我的问题很简单 我希望每次用户选择一个包时,valid_until列会根据所选的包递增; 为了解决这个问题,我创建了一个
SELECT SUM(CASE WHEN Side = 'A' THEN Bad ELSE 0 END) AS bad_A,
SUM(CASE WHEN Side = 'B' THEN Bad ELSE 0 END) AS bad_B,
CAST(t_stamp as DATE) AS Time
FROM Log l
WHERE t_stamp BETWEEN '2018-03-01 06:00:00' AND '2018-04-06 06:00:00'
GROUP BY CAST(t_stamp as DATE);
ORDER BY MIN(t_stamp);
问题是我不知道如何获得package.name。 包和许可之间的关系如下:
BadMethodCallException方法addMonths不存在。
答案 0 :(得分:2)
假设您在ServiceProvider中有类似以下内容
public function boot()
{
Package::observe(PackageObservable::class);
}
应该将包模型传递给Observable类,以便获得包名称,您应该只需要$package->name
。如果这是null,那么当您创建包时,您没有定义名称。
以下所有命令都尝试运行select语句;
DB::table('permit')
->select('permit.valid_until')
->join('package', 'user_id', '=', 'package.user_id')
->where('package.name','=',$package->name)
->addMonths(12);
查询构建器上不存在方法addMonths
。您的许可证模型上有addMonths()
方法吗?
你可能想要按照
的方式做点什么 $permit = Permit::select("valid_until")->where('user_id',$package->user_id)->orderBy('user_id', 'desc')->first();
if ($permit) {
$newValidUntil = $permit->valid_until->addMonths(12);
$permit->update(['valid_until' => $newValidUntil]);
}
如果您发表评论让我知道您是如何继续的,我可以随时更新我的答案以适应您需要的任何额外信息。