shahinur/messenger

这是一个为Laravel 10.x设计的消息包。此包使开发者能够将消息功能添加到他们的Laravel应用程序中。

v2.0.0 2023-12-05 07:22 UTC

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许可证条款分发。