Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 可观测更新值_Php_Mysql_Laravel_Eloquent_Observable - Fatal编程技术网

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。 包装和许可证之间的关系如下:

  • 包装(id、名称、条目编号、用户id、价格、六天交货)
  • 许可证(id、用户id、会员id、使用过的条目、有效期至、条目、标志六天) 提前谢谢!我感谢你的帮助! 抛出:
  • BadMethodCallException方法addMonths不存在


    假设您的服务提供商中有如下内容

    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在哪里您的模型上有可填充属性吗?