Open JerikoOne opened 2 years ago
Small update: basically I can't update a newly programmatically created page in the same call, it's not limited to files or the files field.
sorry for the late response i was on vacation.
the sqlite database only stores information about the id, template and paths but nothing about about the pages data so i am very sure its not a caching issue.
most likely this is caused by how autoid writes the id to the content file using a hook. it should not however block updating further calls - at least there is nothing i can do as a plugin developer here.
my suggestion would be you try to actively refetch the page object instead of relying on the return value. i know it looks a bit silly to do $page = page($page->id());
but i think its worth a try.
$pageData = [...];
if( $pageDoesNotExist == true ) :
$page = $parent->createChild([ 'slug' => ..., 'template' => 'template', 'content' => $pageData ]);
$page = $page->changeStatus('listed');
else:
$page = $page->update( $pageData );
endif;
$page = page($page->id());
if( $fileDoesNotExist == true ) :
$file = $page->createFile(...) // Array with required properties and such
$page = $page->update([ 'files_field' => $file->id() ]);
endif;
What I want to achieve is programmatically update or add new pages, add a file to these pages if it doesn't exist yet and reference it in a files field. Blueprints for the page and the file are correctly set up.
I can only assume that it's some sort of caching issue with the SQlite database, however I couldn't figure it out myself.