Rumah > Soal Jawab > teks badan
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
P粉3015232982023-12-14 14:09:21
Mengikut Laravel dokumentasi < code>pluck kembalikan Collection
Collection
- 所以你只需要在查询/集合上调用 pluck
后调用 toArray()
即可返回数组
- 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
模型的相关令牌的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. 🎜balas0