guild_id); if (!$guild) return; static::sync($guild, $channel); } public static function onUpstreamUpdate(Channel $channel) { $guild = DiscordGuild::firstWhere('guild_id', $channel->guild_id); if (!$guild) return; static::sync($guild, $channel); } public static function onUpstreamDelete($channel) { if (!$channel) return; $model = static::firstWhere('channel_id', $channel->id); if (!$model) return; $model->delete(); } public static function sync(DiscordGuild $guild, Channel $channel) { $model = static::firstOrNew([ 'channel_id' => $channel->id, 'discord_guild_id' => $guild->id, ]); $model->name = $channel->name; $model->type = $channel->type; $model->position = $channel->position; $model->private = $channel->is_private; $model->parent_id = $channel->parent_id; $model->save(); } public function guild() { return $this->belongsTo(DiscordGuild::class, 'discord_guild_id'); } protected $fillable = [ 'channel_id', 'discord_guild_id', ]; }