Download the PHP package oobook/snapshot without Composer
On this page you can find all versions of the php package oobook/snapshot. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package snapshot
Eloquent Snapshot
This package will create easily the snapshots of your eloquent models into another eloquent model. Besides, it retains the relationships as attribute on your projected models.
Installation
You can install the package via composer:
Publish migrations
Create the snapshot migrations file under database/migrations/ folder using artisan
Publish config
If you would like to to change snapshot table name, create the snapshot config file under config/ folder using artisan
Usage
The HasSnapshot
trait allows you to create point-in-time copies (snapshots) of your Eloquent models while maintaining relationships. It provides both snapshot and sync capabilities for attributes and relationships.
Basic Setup
Configuration Options
Snapshot vs Sync
The trait provides two ways to handle attributes and relationships:
-
Snapshot Mode (
snapshot_attributes
,snapshot_relationships
)- Creates a point-in-time copy of the data
- Values remain unchanged even if the source model is updated
- Useful for historical records or audit trails
- Sync Mode (
synced_attributes
,synced_relationships
)- Maintains a live connection to the source model
- Values automatically update when the source model changes
- Useful for maintaining current references
Available Relationships
The snapshot model automatically provides these relationships:
Example Usage
Key Features
- Automatic Syncing: Synced attributes and relationships automatically update when the source model changes
- Relationship Handling: Supports both HasOne/HasMany and BelongsTo/BelongsToMany relationships
- Flexible Configuration: Choose which attributes and relationships to snapshot or sync
- Data Integrity: Maintains separate copies of snapshotted data while keeping synced data up-to-date
Important Notes
- The source model must be specified using
$snapshotSourceModel
- Configuration is optional - by default, all attributes and relationships will be snapshotted (relationships if only you use ManageEloquent Trait on source model)
- Synced relationships maintain live connections and may impact performance with large datasets
- Snapshotted relationships store a copy of the data at creation time
Oobook\Database\Eloquent\Concerns\ManageEloquent
Trait is offered to be used on all related models to snapshot mode
Best Practices
- Use snapshots for historical records or audit trails
- Use synced attributes for frequently changing data that should stay current
- Consider performance implications when syncing large relationships
- Use relationship IDs instead of full objects when creating snapshots for better performance
Testing
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.
All versions of snapshot with dependencies
php Version >=8.1
spatie/laravel-package-tools Version ^1.16