Saya telah menyepadukan pemberitahuan FCM (Firebase Cloud Messaging) dengan projek Laravel saya.
Saya di User
模型中添加了方法 routeNotificationForFcm
.
Sistem pemberitahuan berfungsi dengan baik apabila menentukan token peranti firebase secara langsung dalam kaedah, tetapi gagal apabila mengakses token daripada pangkalan data.
Kod kerja yang ditambah adalah seperti berikut.
public function routeNotificationForFcm() { return ['dJQqgKlETpqCB3uxHtfUbL:APA91bFdrcXZMNH0iMjkXMoop_b_nI3xF92DU0P1nrHVQsTDK4w-OH5QR6BsnWIV-wSxSV7avzuBmLVizNyrRcKfAQz6H66JEP9rWKUeIi7m7wEZwRiuW_WdCW_LaZajdFZlxfCUonCL']; }
Kod yang tidak berfungsi adalah seperti berikut (pertanyaan pangkalan data)
public function routeNotificationForFcm() { return $this->from('fcm_tokens')->where('user_id', $user->id)->pluck('device_token'); }
Mesej ralat yang dipaparkan ialah Token pendaftaran bukan token pendaftaran FCM yang sah
Mengikut Laravel dokumentasi pluck kembalikan Collection
Collection
- 所以你只需要在查詢/集合上調(diào)用 pluck
后調(diào)用 toArray()
即可返回數(shù)組
- jadi anda hanya perlu memanggil pluck
toArray() untuk mengembalikan array $user->id
, itu sahaja Seperti yang anda lakukan sebelum ini dengan token olok-olok. $this
public function routeNotificationForFcm()
{
return $this->from('fcm_tokens')->where('user_id', $user->id)->pluck('device_token')->toArray();
}
Anda juga memanggil $user->id, tetapi tidak dalam skop ini.
Penyelesaiannya mudah, anda perlu lulus nilai atau dapatkan nilai daripada $this
.
public function routeNotificationForFcm()
{
return $this->from('fcm_tokens')->where('user_id', $this->id)->pluck('device_token')->toArray();
}
FcmToken
Tetapi saya secara peribadi mengesyorkan anda untuk menentukan hubungan yang berasingan untuk iniUser
模型的相關(guān)令牌的array
public function fcmTokens()
{
return $this->hasMany(FcmToken::class);
}
FcmToken
- Hanya tekaan tentang cara anda menamakan model anda.
Anda kemudian boleh menggunakannya semula seperti ini untuk mengembalikan array?? token berkaitan untuk model User?? tertentu
public function routeNotificationForFcm()
{
return $this->fcmTokens()->pluck('device_token')->toArray();
}
??Akhir sekali, jika anda menstruktur kod anda seperti ini, anda akan mempunyai perhubungan umum dan menggunakan perhubungan ini untuk menjadikan kod anda lebih fleksibel. ??