triggerdesign / hermes
此包最新版本(2.1)没有提供许可信息。
适用于Laravel的全面功能消息包。
2.1
2015-07-10 11:40 UTC
Requires
- php: >=5.3.0
- illuminate/support: ~5.0
- laravel/framework: 5.*
This package is not auto-updated.
Last update: 2024-09-25 15:20:20 UTC
README
适用于Laravel 4、5和5.1的全面功能消息包。
您可以在多个用户之间进行对话,以构建具有房间或仅私聊1对1消息系统的消息传递系统。
想法
- 对话 -> hasMany 用户
- 对话 -> hasMany 消息
- 消息 -> hasOne 用户
- 消息 -> hasMany 消息状态
- 消息状态 -> hasMany 用户
正如您在上表中看到的,当阅读消息时,Hermes能够区分不同的用户。
例如
有三个用户之间的对话: User1、User2和User3。
User1 发送一条消息,User2 阅读它。
然后我们为这条新消息有三个消息状态
- User1的消息状态是‘自己的’
- User2的消息状态是‘已读’
- User3的消息状态是‘未读’
##安装
步骤1: composer.json
Laravel 5版本
"require": { ... "triggerdesign/hermes": "2.*" }
Laravel 4版本
"require": { ... "triggerdesign/hermes": "1.0" }
运行一个 composer update。
步骤2: app.php
'providers' => array( ... \Triggerdesign\Hermes\HermesServiceProvider::class ); ... 'aliases' => array( ... 'Messaging' => Triggerdesign\Hermes\Facades\Messaging::class );
步骤3: 发布迁移和配置
php artisan vendor:publish
php artisan migrate
现在您已经有了我们需要的用于用户对话的4个表。
步骤4: 使用用户特性
您应该在您的 用户模型 中使用特性
<?php use Triggerdesign\Hermes\Models\UserTrait as HermesTrait; ... class User extends BaseModel implements ConfideUserInterface { use HermesTrait; ...
用法
开始新的对话或查找现有的对话
在ID为1的用户和ID为2的用户之间开始对话。如果已经存在,则返回现有的对话。
//This will start a new conversation between user 1 and 2 or find an existing one $conversation = Messaging::startConversation([1,2]); //or try to find one on your own $conversation = Messagging::findConversations($user_ids, $arguments, $limit);
现在您可以访问这些功能和属性
//All messages in one conversation $conversation->messages; //Add a message $conversation->addMessage($content); $conversation->addUser($user); $conversation->latestMessage(); $conversation->unreadMessages(); $conversation->isUnread(); //conversation has unread messages $conversation->doRead(); //call this after a user has read his messages
您还可以像在Facebook中一样有消息组。如果消息之间没有太多时间间隔,并且所有消息都来自同一发送者,则将几个消息收集到一个消息组中。
//Build an array of \Triggerdesign\Hermes\Classes\MessageGroup $messageGroups = $conversation->buildGroups(); ... //now you can iterate throgh these groups and buld your own messenger @foreach($messageGroups as $messageGroup) <b>{{ $messageGroup->getUser()->name }}: @ {{ $messageGroup->getStart()->format('d.m.Y H:i:s'); }}</b> @foreach($messageGroup->getMessages() as $message) <p>{{ nl2br($message->content) }}</p> @endforeach @endforeach
访问用户的对话
该特性允许您使用这些函数
//All conversations that this user is a member of $user->conversations(); //How many messages are unread $user->unreadMessagesCount(); $user->hasUnreadMessages(); //Get all unread conversations $user->unreadConversations(); //Get all unread conversations inside all the unread conversations $user->unreadMessages();
配置
配置文件已发布到您的应用程序目录。
- 如果您不使用“users”表来存储用户,则可以在 hermes.usersTable 中将其重命名
- 如果要更改表前缀,请使用:hermes.tablePrefix