此包最新版本(2.1)没有提供许可信息。

适用于Laravel的全面功能消息包。

2.1 2015-07-10 11:40 UTC

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