Forums / Extensions / sqliimport > remote_id
Michael Loibl
Thursday 12 May 2011 6:42:13 am
Hi,
i create a class "media_artist" with only one Attribute "name"
the xml file looks like this:
<code>
<ArtistData> <Name>Adam Beyer</Name> </ArtistData>
</code>
and the handler:
public function process( $row ) { // $row is a SimpleXMLElement object $this->currentGUID = $row->guid; $contentOptions = new SQLIContentOptions( array( 'class_identifier' => 'media_artist', 'remote_id' => (string)$row->guid ) ); $content = SQLIContent::create( $contentOptions ); $content->fields->name = (string)$row->Name; // Now publish content $content->addLocation( SQLILocation::fromNodeID( $this->handlerConfArray['DefaultParentNodeID'] ) ); $publisher = SQLIContentPublisher::getInstance(); $publisher->publish( $content ); // Free some memory. Internal methods eZContentObject::clearCache() and eZContentObject::resetDataMap() will be called // @see SQLIContent::__destruct() unset( $content ); }
In the Database the new importet object "Adam Beyer" have the remote_id: "5886cb82fd49d45ef4dff18311af4351"
how can i use the remote_id to update the object with new data...???
Jérôme Vieilledent
Thursday 12 May 2011 6:50:52 am
Hi Michael
This is automatic. See this topic reply I made on this subject earlier : http://share.ez.no/forums/extensions/sqliimport-search-if-attribute-value-already-exists#comment67758
Cheers !
Thursday 12 May 2011 7:38:22 am
Hi Jérôme,
i change the line:
'remote_id' => (string)$row->guid
to:
'remote_id' => (string)$row->Name
now the remote_id is the object name... and I can update the object...
How does it work with the generated remote_id > "5886cb82fd49d45ef4dff18311af4351"
Sorry - I don't get it...
Thursday 12 May 2011 8:50:13 am
RemoteID is an identifier that you can define in order to retrieve content from external data. For instance, if you are importing an RSS feed, this could be the GUID of each item in the feed. Or if you're migrating data from another database, it could be a primary key (keep in mind that this RemoteID MUST remain unique in Exponential database though).
A best practice would be to build your RemoteID with a prefix (ie. my-import-category-<primary_key>).
Of course, if you set a remote id with something that can be changed in the future, you'll have some issues for sure ! :). So don't use a name for instance. It should be unique.
Behind the scenes, SQLIContent::create() checks if a content already exists with that RemoteID, and if yes will return it so you can update it.
Is it clearer now ?