Php 可观测更新值
我的问题很简单 我希望每次用户选择包时,有效的_直到列根据所选包递增; 为了解决这个问题,我创建了一个Php 可观测更新值,php,mysql,laravel,eloquent,observable,Php,Mysql,Laravel,Eloquent,Observable,我的问题很简单 我希望每次用户选择包时,有效的_直到列根据所选包递增; 为了解决这个问题,我创建了一个 PackageObservable{ public function creating(Package $package) { DB::table('permit') ->select('permit.valid_until') ->join('package', 'user_id', '=', 'package.us
PackageObservable{
public function creating(Package $package)
{ DB::table('permit')
->select('permit.valid_until')
->join('package', 'user_id', '=', 'package.user_id')
->where('package.name','=',$package->name)
->addMonths(12);
DB::table('permit')
->select('permit.name')
->join('package', 'user_id', '=', 'package.user_id')
->where('package.name','=','option3')
->addWeeks(1);
}}
问题是我不知道如何获取package.name。
包装和许可证之间的关系如下:
假设您的服务提供商中有如下内容
public function boot()
{
Package::observe(PackageObservable::class);
}
包模型应该传递给可观察类,因此要获得包名,您只需执行$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]);
}
如果你发表评论让我知道你进展如何,我可以随时更新我的答案,以适应你需要的任何额外信息 $date=Permit::select(“有效期至”)->where('user\u id',$package->user\u id)->orderBy('user\u id','desc')->first()$新建=$date->有效期至->添加月份(12);dd(新)$new2=$date->save();我已经这样做了,告诉我如何保存它,告诉我该值如何不保存在数据库中,只需接受我的答案并编辑你的答案,但告诉我如何保存它$date->update(['valid_until'=>$new]);如果模型上有“fillable”属性,则需要确保该数组中存在有效的\u。即使在我添加($date)日期更改时,仍然没有更新日期不知道prb在哪里您的模型上有可填充属性吗?