Back End Broadcast
[Concluído]
Como eu faria no caso, se eu quiser enviar uma notificação pra um array de usuários?
Olá, Denilson!
Tudo bem?
Sua ideia seria para algo mais ou menos um chat, certo?
Enviar uma mensagem para um grupo de usuários, isso mesmo?
Nesse caso é até mais fácil, porque basta enviar a mensagem para o "chat_id", usando um channel privado.
No curso de LaraChat explico com mais detalhes estes conceitos, acredito que está bem de acordo com o que precisa.
A ideia é enviar a notificação somente para usuários de uma role específica. Ex: Tenho 3 roles: rh, técnico, supervisor.
Quando o técnico criar um dado em uma entidade especifica, quero que avise somente os usuários que possuem a role supervisor, que foi criado um dado no banco de dados.
Ao acho q saiu um pouco do escopo de chat. No exemplo do curso tu faz com exemplo com post criado. é como se a notificação do post criado chegasse somente para as pessoas que já comentaram naquele post ou algo assim entendeu ?
Entendi amigo.
A dinâmica de PrivateChannel aplicada no LaraChat é exatamente o que você precisa, o que você vai precisar é justamente entender a dinâmica, e aplicar, e se tiver qualquer dúvida, conta comigo amigo.
Opa Carlos Jóia? vamos ver se eu entendi, se eu estiver errado me corrija. Estou falando da aula 06 do Módulo 7 (chat).
Segundo a lógica ali. Por volta de 6:37 eu preciso no lugar de passar o receiver_id eu passo meu array de id.
Ai no arquivo de rotas do canal eu fasso tipo assim.
foreach($users as $usr)
return $user->id === $usr
É isso ?
Eu consegui, mas por favor verifica se existi uma maneira melhor de fazer.
Evento:
https://prnt.sc/6XkIPeMTKCyC
Echo.js
https://prnt.sc/o4yHaWuWZXtw
Dessa maneira não usei privateChannel se tiver uma maneira melhor de fazer por favor me aconselhe.
Que bom que conseguiu, meus parabéns.
O que é este Work_Permission? Um Model? O que faz com essa classe?
Está trabalhando com PHP >=8, certo?
Usa promoção de atributos:
public function __construct(
protected NomeClasse $nomeAtributo,
) {}
Depois basta fazer em qualquer método $this->nomeAtributo
--
Por que usou o query builder (DB), e não o Eloquent (models)?
--
Normalmente (não é regra) quando dispara um evento, ele recebe estes dados já no construtor, raramente precisa fazer uma query no próprio event.
-> WorkPermission é um model de criação de permissoes de trabalho.
-> Sim PHP >= 8
-> usei DB::table para users pois usar a Model direto por User:: estava dando erro, que user nao estava declarado mesmo ele sendo chamado.
-> usei DB::table em model_has_roles pois é uma pivot criada pela lib Spatie para criação de roles e permissions e ela não tem model.
A entendi voce ta falando pra mim passar o pluck com os ids de usuários la na chamada do evento pelo Observer né ?
Eu percebi q todo usuário que loga ja acessa esse channel criado é assim mesmo? tem alguma maneira para melhorar isso.
Hoje tenho 4 roles abri as 4 e só enviou para a role que era pra enviar. No geral ta funcionando só queria saber se tem como melhorar isso la no back. Por que a validação do usuário no fazendo la no Echo.js
Boa amigo.
Sempre tem como melhorar, se olhar o código 100x sempre vai achar algo para melhorar rsrsrs
--
Como está usando PHP > 8, trabalha com promoção de atributos:
public function __construct(
protected NomeClasse $nomeAtributo,
) {}
Depois basta fazer em qualquer método $this->nomeAtributo
--
Procura passar os dados para o event, no construtor, assim você fica com menos querys esparramadas pelo código.
ok
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!