$profile = $user->createPersona([
'display_name' => 'Nick',
'headline' => 'Laravel Package Builder',
'motto' => 'Build useful things.',
'bio' => 'Building useful Laravel packages.',
'location' => 'Kansas',
'website_url' => 'https://example.com',
'is_public' => true,
'published_at' => now(),
]);$profile->isVisible();
$visibleProfiles = Persona::visible()->get();Visibility follows persona.visibility.require_published_at.
$profile = $user->persona;
$user->hasPersona();
$user->updatePersona([
'headline' => 'Open-source Laravel Developer',
]);$url = $profile->url();
$url = $user->personaUrl();$avatarUrl = $profile->avatarUrl();
$bannerUrl = $profile->bannerUrl();$tokens = $profile->usernameTokens();
$profile->canChangeUsername();
$profile->nextUsernameTokenAt();
$profile->changeUsername('signal-nick');Skip token spending for an administrative change:
$profile->changeUsername(
'signal-nick',
spendToken: false
);$comment = $profile->addComment(
$user,
'Great profile.'
);
$reply = $comment->addReply(
$otherUser,
'Thank you.'
);$comment->edit('Updated comment.');$comment->approve();
$comment->pin();
$comment->delete();See 📖 Profile Comments for the complete comment API.
Configuration values such as profile field limits, link limits, allowed social platforms, and guest-comment preferences are intended for the consuming application's form requests and UI.
Persona does not automatically validate arbitrary profile assignments or register comment-management routes.