kennyuzoma / messenger
Laravel 5.2 的 Messenger 功能。
1.2
2020-03-15 05:03 UTC
Requires
- php: >=5.5.9
- illuminate/support: ~5.8.35|^6.0|^7.0
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: 4.*
README
Messenger
Laravel 5.x 的 Chat/Message 系统。
使用 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 5.x
- PHP >=5.5
Composer
$ composer require gerardojbaez/messenger
服务提供者和外观
如果您正在使用 laravel 5.5 及更高版本,由于此包支持包自动发现功能,您可以跳过以下两个步骤。
将包添加到您的应用程序服务提供者中 config/app.php 文件。
'providers' => [ /** * Third Party Service Providers... */ Gerardojbaez\Messenger\MessengerServiceProvider::class, ]
将外观添加到您的别名数组中
'aliases' => [ [...] 'Messenger' => Gerardojbaez\Messenger\Facades\Messenger::class, ]
配置文件和迁移
使用以下命令发布包配置文件和迁移
$ php artisan vendor:publish --provider="Gerardojbaez\Messenger\MessengerServiceProvider"
然后运行迁移
$ php artisan migrate
特质和合同
将 Gerardojbaez/Messenger/Traits/Messageable 特质和 Gerardojbaez/Messenger/Contracts/MessageableInterface 合同添加到您的 Users 模型中。
查看以下示例
<?php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; use Gerardojbaez\Messenger\Contracts\MessageableInterface; use Gerardojbaez\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);
线程动态属性
线程动态属性是那些不来自数据库的属性,相反,我们根据数据生成它们。
例如,线程本身没有标题,Messenge 会根据参与者列表创建它。
属性
$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 个模型
Gerardojbaez\Messenger\Models\Message; Gerardojbaez\Messenger\Models\MessageThread; Gerardojbaez\Messenger\Models\MessageThreadParticipant;
您可以使用它们作为常规。有关详细信息,请查看每个模型和 Gerardojbaez\Messenger\Traits\Messageable 特质。
配置文件
目前您可以配置要使用哪些模型。
许可证
此软件包是免费软件,根据 MIT 许可证的条款分发。