shahinur / messenger
这是一个为Laravel 10.x设计的消息包。此包使开发者能够将消息功能添加到他们的Laravel应用程序中。
v2.0.0
2023-12-05 07:22 UTC
Requires
- php: ^8.1
- illuminate/support: ^10.30
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-24 11:24:47 UTC
README
此包最初由https://github.com/gerardojbaez/messenger构建,然后更新了依赖项。
Laravel 8.x的聊天/消息系统。
使用Messenger
- 用户可以发送和接收消息。
- 用户可以参与多个对话。
- 用户可以向一个或多个用户发送消息。
TL;DR
use Messenger; // Sending a message to one user: Messenger::from($user)->to($user)->message('Hey!'); // Sending a message to multiple users: (an array of user ids) Messenger::from($user)->to([1,2,3,4])->message('Who want to chat?!'); // Sending a message to one thread: (perfect for replying to a specific thread!) Messenger::from($user)->to($thread)->message('I\'ll be there');
内容
安装
需求
- Laravel 8.x
- PHP >=7.4.x
Composer
$ composer require shahinur/messenger
服务提供商和外观
将包添加到应用程序服务提供商中的config/app.php
文件。
'providers' => [ /** * Third Party Service Providers... */ Shahinur\Messenger\MessengerServiceProvider::class, ]
将外观添加到别名字符数组中
'aliases' => [ [...] 'Messenger' => Shahinur\Messenger\Facades\Messenger::class, ]
配置文件和迁移
使用命令发布包配置文件和迁移
$ php artisan vendor:publish --provider="Shahinur\Messenger\MessengerServiceProvider"
然后运行迁移
$ php artisan migrate
特质和合约
将Shahinur/Messenger/Traits/Messageable
特质和Shahinur/Messenger/Contracts/MessageableInterface
合约添加到Users
模型中。
请参见以下示例
<?php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; use Shahinur\Messenger\Contracts\MessageableInterface; use Shahinur\Messenger\Traits\Messageable; class User extends Authenticatable implements MessageableInterface { use Messageable;
用法
发送给单个用户
<?php // Import the facade use Messenger; Messenger::from($user)->to($user2)->message('Hey!')->send();
发送给多个用户
<?php // Import the facade use Messenger; Messenger::from($user)->to([1,2,3,4,5])->message('Hey!')->send();
发送到线程
<?php // Import the facade use Messenger; Messenger::from($user)->to($thread)->message('That\'s awesome!')->send();
获取新消息的数量
获取全局计数 - 所有用户线程中的新消息
<?php echo $user->unreadMessagesCount;
获取特定用户线程的计数
<?php echo $user->threads->first()->unreadMessagesCount;
将线程标记为已读
标记线程为已读
<?php $user->markThreadAsRead($thread_id);
线程动态属性
线程动态属性是那些不是来自数据库的属性,而是基于数据生成的。
例如,线程本身没有标题,而是由参与者列表生成。
属性
$thread->title
$thread->creator
以获取线程创建者。$thread->lastMessage
以获取线程中的最新消息。
显示用户线程
控制器
public function index() { // Eager Loading - this helps prevent hitting the // database more than the necessary. $this->user->load('threads.messages.sender'); return view('messages.index', [ 'threads' => $this->user->threads ]); }
视图
<div class="panel panel-default"> <div class="list-group"> @if($threads->count() > 0) @foreach($threads as $thread) @if($thread->lastMessage) <a href="#" class="list-group-item"> <div class="clearfix"> <div class="pull-left"> <span class="h5">{{ $thread->title }}</span> @if($thread->unreadMessagesCount > 0) <span class="label label-success">{!! $thread->unreadMessagesCount !!}</span> @endif </div> <span class="text-muted pull-right">{{ $thread->lastMessage->created_at->diffForHumans() }}</span> </div> <p class="text-muted no-margin">{{ str_limit($thread->lastMessage->body, 35) }}</p> </a> @endif @endforeach @endif </div> </div>
使用模型
Messenger有3个模型
Shahinur\Messenger\Models\Message; Shahinur\Messenger\Models\MessageThread; Shahinur\Messenger\Models\MessageThreadParticipant;
您可以使用它们作为正常。有关更多详细信息,请参阅每个模型和Shahinur\Messenger\Traits\Messageable
特质。
配置文件
目前,您可以配置要使用的模型。
许可证
此包是免费软件,根据MIT许可证条款分发。