Maison > Questions et réponses > le corps du texte
J'ai intégré les notifications FCM (Firebase Cloud Messaging) à mon projet Laravel.
J'en suis à User
模型中添加了方法 routeNotificationForFcm
.
Le système de notification fonctionne correctement lors de la spécification du jeton du périphérique Firebase directement dans la méthode, mais échoue lors de l'accès au jeton à partir de la base de données.
Le code de travail ajouté est le suivant.
public function routeNotificationForFcm() { return ['dJQqgKlETpqCB3uxHtfUbL:APA91bFdrcXZMNH0iMjkXMoop_b_nI3xF92DU0P1nrHVQsTDK4w-OH5QR6BsnWIV-wSxSV7avzuBmLVizNyrRcKfAQz6H66JEP9rWKUeIi7m7wEZwRiuW_WdCW_LaZajdFZlxfCUonCL']; }
Le code qui ne fonctionne pas est le suivant (requête base de données)
public function routeNotificationForFcm() { return $this->from('fcm_tokens')->where('user_id', $user->id)->pluck('device_token'); }
Le message d'erreur affiché est Le jeton d'enregistrement n'est pas un jeton d'enregistrement FCM valide
P粉3015232982023-12-14 14:09:21
Selon la documentation Laravel < code>pluck return Collection
Collection
- 所以你只需要在查询/集合上调用 pluck
后调用 toArray()
即可返回数组
- il vous suffit donc d'appeler pluck
toArray() pour renvoyer le array $user->id
, c'est tout Comme vous l'avez fait auparavant avec le jeton simulé. $this
public function routeNotificationForFcm()
{
return $this->from('fcm_tokens')->where('user_id', $user->id)->pluck('device_token')->toArray();
}
Vous avez également appelé $user->id, mais pas dans ce cadre.
La solution est simple, vous devez transmettre la valeur ou obtenir la valeur de $this
.
public function routeNotificationForFcm()
{
return $this->from('fcm_tokens')->where('user_id', $this->id)->pluck('device_token')->toArray();
}
FcmToken
Mais je vous recommande personnellement de définir une relation distincte pour celaUser
模型的相关令牌的array
public function fcmTokens()
{
return $this->hasMany(FcmToken::class);
}
FcmToken
- Juste une supposition sur la façon dont vous avez nommé votre modèle.
Vous pouvez ensuite le réutiliser comme ceci pour renvoyer un tableau🎜 de jetons associés pour un modèle User🎜 spécifique
public function routeNotificationForFcm()
{
return $this->fcmTokens()->pluck('device_token')->toArray();
}
🎜Enfin, si vous structurez votre code ainsi, vous aurez une relation générale et utiliserez cette relation pour rendre votre code plus flexible. 🎜répondre0