2016-09-23 13 views
0

FirebaseとMySQLをバックエンドとして使用しています。私はlaravelプロジェクトを使ってFirebaseにデータを挿入できます。しかし、操作の削除と更新はMySQLでのみ有効です。Laravelプロジェクトを設定してJSONオブジェクトを更新および削除します

これらの機能をFirebaseでもアクティブにしたいと考えています。私はMpociot\Firebase\SyncsWithFirebaseを使ってFirebaseとデータを同期させています。それは完全に挿入のためだけに働いています。私はその人のための解決策が必要です。

答えて

1

何もする必要はありません。それはあなたのためにそれを処理します。 let's have a look at that trait

public static function bootSyncsWithFirebase() 
{ 
    static::created(function ($model) { 
     $model->saveToFirebase('set'); 
    }); 
    static::updated(function ($model) { 
     $model->saveToFirebase('update'); 
    }); 
    static::deleted(function ($model) { 
     $model->saveToFirebase('delete'); 
    }); 
} 

OK。それで、それは自分自身をcreate/update/deleteイベントに結びつけます。残りの機能は何をしていますか?

protected function saveToFirebase($mode) 
{ 
    if (is_null($this->firebaseClient)) { 
     $this->firebaseClient = new FirebaseLib(config('services.firebase.database_url'), config('services.firebase.secret')); 
    } 
    $path = $this->getTable() . '/' . $this->getKey(); 
    if ($mode === 'set' && $fresh = $this->fresh()) { 
     $this->firebaseClient->set($path, $fresh->toArray()); 
    } elseif ($mode === 'update' && $fresh = $this->fresh()) { 
     $this->firebaseClient->update($path, $fresh->toArray()); 
    } elseif ($mode === 'delete') { 
     $this->firebaseClient->delete($path); 
    } 
} 

あります。 Eloquent/FQBで削除が発生すると、Firebaseですでに削除されています。

Eloquentを使用して削除/ udpatesを実行していないことが原因で、イベントが受信されない可能性があります。

+0

'App \ EventCal :: where(' id '、20) - > delete();'私が削除に使用したクエリです。これはmysqlからのみ削除されます。しかし、火災基地からではありません。だからfirebaseから削除するクエリは何でしょうか? –

0

最初のレコードを取得する必要があります。そうしないと、EventCalモデルのインスタンスが作成されません。

App \ EventCal :: where( 'id'、20) - > first() - > delete();

関連する問題