sqliimport > remote_id

Author Message

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:

<code>

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 );
}

</code>

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 !

Michael Loibl

Thursday 12 May 2011 7:38:22 am

Hi Jérôme,

i change the line:

<code>

'remote_id' => (string)$row->guid

</code>

to:

<code>

'remote_id' => (string)$row->Name

</code>

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...

Jérôme Vieilledent

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 eZ Publish 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 ?

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.