Skip to content

Commit d6651e6

Browse files
authored
Follow makeModelFromContract() approach in Entries import (#163)
1 parent f5780b7 commit d6651e6

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

src/Commands/ImportEntries.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Statamic\Contracts\Entries\CollectionRepository as CollectionRepositoryContract;
88
use Statamic\Contracts\Entries\Entry as EntryContract;
99
use Statamic\Contracts\Entries\EntryRepository as EntryRepositoryContract;
10+
use Statamic\Eloquent\Entries\Entry as EloquentEntry;
1011
use Statamic\Facades\Entry;
1112
use Statamic\Stache\Repositories\CollectionRepository;
1213
use Statamic\Stache\Repositories\EntryRepository;
@@ -67,7 +68,9 @@ private function importEntries()
6768

6869
$this->withProgressBar($entriesWithoutOrigin, function ($entry) {
6970
$lastModified = $entry->fileLastModified();
70-
$entry->toModel()->fill(['created_at' => $lastModified, 'updated_at' => $lastModified])->save();
71+
$entry = EloquentEntry::makeModelFromContract($entry)
72+
->fill(['created_at' => $lastModified, 'updated_at' => $lastModified])
73+
->save();
7174
});
7275

7376
if ($entriesWithOrigin->count() > 0) {
@@ -76,7 +79,9 @@ private function importEntries()
7679

7780
$this->withProgressBar($entriesWithOrigin, function ($entry) {
7881
$lastModified = $entry->fileLastModified();
79-
$entry->toModel()->fill(['created_at' => $lastModified, 'updated_at' => $lastModified])->save();
82+
EloquentEntry::makeModelFromContract($entry)
83+
->fill(['created_at' => $lastModified, 'updated_at' => $lastModified])
84+
->save();
8085
});
8186
}
8287

src/Entries/Entry.php

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,32 @@ public static function fromModel(Model $model)
3838
}
3939

4040
public function toModel()
41+
{
42+
return self::makeModelFromContract($this);
43+
}
44+
45+
public static function makeModelFromContract(EntryContract $source)
4146
{
4247
$class = app('statamic.eloquent.entries.model');
4348

44-
$data = $this->data();
49+
$data = $source->data();
4550

4651
$attributes = [
47-
'origin_id' => $this->origin()?->id(),
48-
'site' => $this->locale(),
49-
'slug' => $this->slug(),
50-
'uri' => $this->uri(),
51-
'date' => $this->hasDate() ? $this->date() : null,
52-
'collection' => $this->collectionHandle(),
53-
'blueprint' => $this->blueprint ?? $this->blueprint()->handle(),
52+
'origin_id' => $source->origin()?->id(),
53+
'site' => $source->locale(),
54+
'slug' => $source->slug(),
55+
'uri' => $source->uri(),
56+
'date' => $source->hasDate() ? $source->date() : null,
57+
'collection' => $source->collectionHandle(),
58+
'blueprint' => $source->blueprint ?? $source->blueprint()->handle(),
5459
'data' => $data->except(EntryQueryBuilder::COLUMNS),
55-
'published' => $this->published(),
56-
'status' => $this->status(),
57-
'updated_at' => $this->lastModified(),
58-
'order' => $this->order(),
60+
'published' => $source->published(),
61+
'status' => $source->status(),
62+
'updated_at' => $source->lastModified(),
63+
'order' => $source->order(),
5964
];
6065

61-
if ($id = $this->id()) {
66+
if ($id = $source->id()) {
6267
$attributes['id'] = $id;
6368
}
6469

0 commit comments

Comments
 (0)