【问题标题】:Observable updating values可观察到的更新值
【发布时间】:2018-04-06 03:33:14
【问题描述】:

我的问题很简单 我希望每次用户选择一个包时,valid_until 列都会根据所选包递增; 为了解决这个问题,我创建了一个

 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。 Package 和 Permit 的关系如下:

  1. 包(id,name,entry_nr,user_id,price,flga_six_days)
  2. 许可(id、user_id、membership_id、used_entries、valid_until、entries、flag_six_days) 在此先感谢!感谢您的帮助! 抛出:

BadMethodCallException 方法 addMonths 不存在。

【问题讨论】:

    标签: php mysql laravel eloquent observable


    【解决方案1】:

    假设您的 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]);
     }
    

    如果您发表评论让我知道您的进展情况,我可以随时更新我的​​答案以适应您需要的任何额外信息。

    【讨论】:

    • $date=Permit::select("valid_until") ->where('user_id',$package->user_id) ->orderBy('user_id', 'desc')->first( ); $new =$date->valid_until->addMonths(12); dd($新); $new2 = $date->save();我已经这样做了,只是告诉我如何保存它
    • 不知何故该值没有保存在数据库中,只需接受我的答案并编辑您的答案,但告诉我如何保存它
    • $date->update(['valid_until' => $new]);如果模型上有“可填充”属性,则需要确保 valid_until 在该数组中。
    • 即使我 dd($date) 日期更改不知道prb在哪里,仍然没有更新
    • 你的模型有可填充的属性吗?
    猜你喜欢
    • 2018-07-27
    • 2021-10-26
    • 2016-11-26
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多