配置Laravel项目以更新和删除JSON对象

时间:2016-09-23 02:30:46

标签: laravel firebase laravel-5 laravel-5.1 firebase-realtime-database

我使用Firebase和MySQL作为后端。我可以使用laravel项目将数据插入Firebase。但删除和更新操作仅对MySQL有效。

我想让这些功能对Firebase也有效。我正在使用<Slider x:Name="uiScaleSlider" Value="1" Minimum="0.5" Maximum="1.5" /> 与Firebase同步数据。它完全适用于插入。我需要一个解决方案。

2 个答案:

答案 0 :(得分: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');
    });
}

行。所以它将自己与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,因此没有收到任何事件。

答案 1 :(得分:0)

您必须获得第一条记录,否则您将无法获得EventCal模型实例。

App \ EventCal :: where('id',20) - &gt; first() - &gt; delete();