gerardojbaez / messenger
Laravel 5.2 的 Messenger 功能。
v1.1.0
2018-03-04 02:44 UTC
Requires
- php: >=5.5.9
- illuminate/support: ~5.0
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: 4.*
README
Messenger
Laravel 5.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 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);
线程动态属性
线程动态属性是基于数据生成的属性,而不是来自数据库。
例如,线程本身没有标题,而是 Messenger 根据参与者列表创建它。
属性
$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 许可协议分发。