Ich habe FCM-Benachrichtigungen (Firebase Cloud Messaging) in mein Laravel-Projekt integriert.
Ich bin bei User
模型中添加了方法 routeNotificationForFcm
.
Das Benachrichtigungssystem funktioniert einwandfrei, wenn das Firebase-Gerätetoken direkt in der Methode angegeben wird, schlägt jedoch fehl, wenn aus der Datenbank auf das Token zugegriffen wird.
Der hinzugefügte Arbeitscode lautet wie folgt.
public function routeNotificationForFcm() { return ['dJQqgKlETpqCB3uxHtfUbL:APA91bFdrcXZMNH0iMjkXMoop_b_nI3xF92DU0P1nrHVQsTDK4w-OH5QR6BsnWIV-wSxSV7avzuBmLVizNyrRcKfAQz6H66JEP9rWKUeIi7m7wEZwRiuW_WdCW_LaZajdFZlxfCUonCL']; }
Der Code, der nicht funktioniert, ist wie folgt (Datenbankabfrage)
public function routeNotificationForFcm() { return $this->from('fcm_tokens')->where('user_id', $user->id)->pluck('device_token'); }
Die angezeigte Fehlermeldung lautet: Der Registrierungstoken ist kein gültiger FCM-Registrierungstoken
根据 Laravel 文档 pluck return
Collection
- 所以你只需要在查询/集合上调用pluck
后调用toArray()
即可返回数组
,就像您之前对模拟令牌所做的那样。您还调用了
$user->id
,但在此范围内没有。 解决方案很简单,您需要传递值或从$this
获取值。但我个人建议您为此定义单独的关系
FcmToken
- 只是猜测您如何命名模型。 然后您可以像这样重用它来返回特定User
模型的相关令牌的array
最后,如果您像这样构建代码,您将拥有一般关系,并利用这种关系使您的代码更加灵活。