2015-11-11 2 views
2

Я пытаюсь настроить случайное значение по умолчанию для модели Laravel, чтобы при регистрации пользователем случайного значения сохранялось в базе данных для каждого пользователя.Случайное значение по умолчанию в моделях Laravel

Я посмотрел на аналогичный question на StackOverflow, в котором объясняется, как настроить значение по умолчанию с помощью переменной $ attributes, но это не объясняет случайный бит.

+0

для случайного значения используйте эту функцию str_random(); –

+0

Моя проблема заключается не в генерации случайного значения, а в том, как по умолчанию можно привязать к модели Laravel. –

ответ

3

Переопределить в save метод модели:

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

Произошла ошибка при попытке кода: ОшибкаException в строке User.php 16: Объявление App \ User :: save() должно быть совместимо с Illuminate \ Database \ Eloquent \ Model :: save (array $ options = Array) –

+1

Отредактировано для устранения ошибки, которую вы получили – Dracony

1

Для привязки поля по умолчанию, если сохранить модель следовать этой

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

Это должен быть принятый ответ. – user2094178

0

Вы не обеспечивая достаточно информации, поэтому я даю вам решение: вы можете использовать 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(); 
Смежные вопросы