'boolean', ]; protected static function newFactory(): ShareFactory { return ShareFactory::new(); } /** * Generate share link * * @return string */ public function getLinkAttribute() { return url('/share', ['token' => $this->attributes['token']]); } public function user() { return $this->hasOne(User::class, 'id', 'user_id'); } /** * Model events */ protected static function boot() { parent::boot(); static::creating(function ($shared) { $shared->id = (string) Str::uuid(); $shared->token = Str::random(16); }); } }