Уведомление чата не работает - PullRequest
0 голосов
/ 28 мая 2020

Я использую пакет «Laravel Messenger» из Github Я изменил его по своему желанию,
Но теперь по какой-то причине он не выполняется «непрочитанный» function,
Это даже не показывает никаких ошибок, и я ничего не модифицировал в кодах, которые выполняют «непрочитанные».

Исходный проект использует данные «ContactsList» от пользователей table, я только что добавил новую таблицу («друзья») и через нее я передаю данные в свой «Список контактов».

Вот Контроллер Контактов: -

public function get(){
        $sem = Auth::user()->id;
        $contacts = DB::table('friends')
    ->where('my_id', $sem)
    ->get();

    // $contacts = User::where('id', '!=', auth()->id())->get();

     // get a collection of items where sender_id is the user who sent us a message
        // and messages_count is the number of unread messages we have from him
        $unreadIds = Message::select(\DB::raw('`from` as sender_id, count(`from`) as messages_count'))
            ->where('to', auth()->id())
            ->where('read', false)
            ->groupBy('from')
            ->get();

            // add an unread key to each contact with the count of unread messages
        $contacts = $contacts->map(function($contact) use ($unreadIds) {
            $contactUnread = $unreadIds->where('sender_id', $contact->id)->first();

            $contact->unread = $contactUnread ? $contactUnread->messages_count : 0;

            return $contact;
        });

    return response()->json($contacts);
}

Единственное, что я изменил, это заменил это: - $contacts = User::where('id', '!=', auth()->id())->get()

Кому: - $sem = Auth::user()->id; $contacts = DB::table('friends') ->where('my_id', $sem) ->get();

Это мой список контактов. vue: -

<template>
    <div class="contacts-list">
        <ul>
            <li v-for="contact in sortedContacts" :key="contact.friends_id" @click="selectContact(contact)" :class="{ 'selected': contact == selected }">
                <div class="avatar">
                    <img :src="contact.profile_image" :alt="contact.name">
                </div>
                <div class="contact">
                    <p class="name">{{ contact.name }}</p>
                    <p class="email">{{ contact.email }}</p>
                </div>
                <span class="unread" v-if="contact.unread">{{ contact.unread }}</span>
            </li>
        </ul>
    </div>
</template>

<script>
    export default {
        props: {
            contacts: {
                type: Array,
                default: []
            }
        },
        data() {
            return {
                selected: this.contacts.length ? this.contacts[0] : null
            };
        },
        methods: {
            selectContact(contact) {
                this.selected = contact;

                this.$emit('selected', contact);
            }
        },
        computed: {
            sortedContacts() {
                return _.sortBy(this.contacts, [(contact) => {
                    if (contact == this.selected) {
                        return Infinity;
                    }

                    return contact.unread;
                }]).reverse();
            }
        }
    }
</script>

вот часть учебника, где он добавляет функцию «непрочитанные»
Ссылка на учебник

Время: - 7: 56

Я знаю, что это не те вопросы, которые следует здесь задавать, но мне отчаянно нужна помощь
Я перепробовал все, что было в моих силах
Пожалуйста, бросьте все, что, по вашему мнению, может мне помочь

-Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...