PHP code example of finller / laravel-conversations
1. Go to this page and download the library: Download finller/laravel-conversations library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
finller / laravel-conversations example snippets
use Elegantly\Conversation\Concerns\ParticipateToConversations;
class User extends Authenticatable
{
use ParticipateToConversations;
}
use Elegantly\Conversation\Concerns\HasConversation;
class Mission extends Model
{
use HasConversation;
}
use Elegantly\Conversation\Conversation;
$conversation = new Conversation();
$conversation->save();
// Attach participants
$conversation->users()->sync([$user->id, $user2->id]);
// Optional: attach to a parent model
$conversation->conversationable()->associate($mission);
$conversation->save();
// Optional: set an owner
$conversation->owner()->associate($admin);
$conversation->save();
use Elegantly\Conversation\Message;
$message = new Message([
'content' => 'Hey team, the deployment is live!',
]);
$message->user()->associate(auth()->user());
$conversation->send($message);
$message->markAsReadBy($user);
// Or force-update the read timestamp
$message->markAsReadBy($user, force: true);
use Elegantly\Conversation\Conversation;
// Conversations with unread messages for a user
Conversation::query()->unreadBy($user)->get();
// Conversations fully read by a user
Conversation::query()->readBy($user)->get();
// Fast unread queries using the pivot column
$user->denormalizedUnreadConversations()->get();
$user->denormalizedReadConversations()->get();
// Messages inside a conversation
$conversation->messages()->unreadBy($user)->get();
$conversation->messages()->readBy($user)->get();
// Sent by a specific user
$conversation->messages()->byUser($user)->get();
// Not sent by a specific user
$conversation->messages()->notByUser($user)->get();
// On an existing message
$message->toMarkdown();
// Or manually
Message::markdown($rawString);
return [
'model_user' => User::class,
'model_message' => Message::class,
'model_conversation' => Conversation::class,
'model_conversation_user' => ConversationUser::class,
'model_read' => MessageRead::class,
// When a User is deleted, also delete his messages
'cascade_user_delete_to_messages' => false,
// When a Conversation is deleted, also delete its messages
'cascade_conversation_delete_to_messages' => false,
// When the parent model is deleted, also delete the conversation
'cascade_conversationable_delete_to_conversation' => false,
'markdown' => [
'environment' => [
'allow_unsafe_links' => false,
],
],
];
namespace App\Models;
use Elegantly\Conversation\Message as BaseMessage;
class Message extends BaseMessage
{
protected static function booted(): void
{
parent::booted();
// your logic
}
}