mirror of
https://github.com/nullthoughts/laravel-data-sync.git
synced 2026-02-04 01:48:18 +00:00
52 lines
1.4 KiB
Markdown
52 lines
1.4 KiB
Markdown
# Laravel Data Sync
|
|
|
|
Laravel utility to keep records synced between enviroments through source control
|
|
|
|
- Add new `sync` disk in `config/filesystems.php`
|
|
- Create a JSON file for each model, using the model name as the filename. Example: Product.json would update the Product model
|
|
- Use nested arrays in place of hardcoded IDs for relationships
|
|
- Run `php artisan data:sync`
|
|
|
|
|
|
## Examples
|
|
**User.json**:
|
|
```json
|
|
[
|
|
{
|
|
"name": "Ferris Bueller",
|
|
"properties->title": "Leisure Consultant",
|
|
"phone_numbers->mobile": "555-555-5555",
|
|
"phone_numbers->office": "",
|
|
"_email": "ferris@buellerandco.com",
|
|
"department": {
|
|
"name": "Management",
|
|
"location": {
|
|
"name": "Chicago"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
```
|
|
|
|
translates to:
|
|
|
|
```php
|
|
|
|
User::updateOrCreate([
|
|
'email' => 'ferris@buellerandco.com',
|
|
],[
|
|
'name': 'Ferris Bueller',
|
|
'properties->title' => 'Leisure Consultant',
|
|
'phone_numbers->mobile' => '555-555-5555',
|
|
'department_id' => Department::where('name', 'Management)
|
|
->where('location_id', Location::where('name', 'Chicago')->first()->id)
|
|
->first()
|
|
->id,
|
|
]);
|
|
|
|
```
|
|
|
|
## Notes
|
|
- empty values are skipped
|
|
- the criteria/attributes for updateOrCreate are identified with a preleading underscore
|
|
- nested values represent relationships and are returned using where($key, $value)->first()->id |