【问题标题】:Default random value in Laravel modelsLaravel 模型中的默认随机值
【发布时间】:2016-02-12 13:47:09
【问题描述】:

我正在尝试为 Laravel 模型设置一个随机默认值,以便在用户注册时为每个用户将随机值保存到数据库中。

我在 StackOverflow 上查看了类似的 question,它解释了如何使用 $attributes 变量设置默认值,但它没有解释随机位。

【问题讨论】:

  • 对于随机值使用这个函数str_random();
  • 我的问题不在于生成随机值,而是如何默认绑定到 Laravel 模型

标签: php laravel random


【解决方案1】:

覆盖模型的save 方法:

public function save(array $options = array())
{
    if(empty($this->id)) {
        $this->someField = rand();
    }
    return parent::save($options);
}

【讨论】:

  • 尝试代码时出现以下错误:User.php 第 16 行中的 ErrorException:App\User::save() 声明应与 Illuminate\Database\Eloquent\Model::save 兼容(数组 $options = 数组)
【解决方案2】:

对于保存模型时绑定字段默认值,请遵循此

public static function boot()
{
    parent::boot();
    static::creating(function($post)
    {
            $post->created_by = Auth::user()->id;
    });
}

【讨论】:

    【解决方案3】:

    你没有提供足够的信息,所以我给你一个解决方案:你可以在你的用户模型中使用MUTATOR

    class User extends Model {
        public function setRandomStringAttribute($number)
        {
           $this->attributes['random_string'] = str_random($number);
        }
    }
    

    其中“random_string”是用户表中保存该值的列。这样,每次您设置模型的“random_string”属性时,它都会自动按照定义进行设置。您只需像这样使用它:

    $user = new User;
    $user->random_string = 20;
    $user->save();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 2016-01-16
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多