We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25922
    • 2 Posts
    I’m trying to cascade remove by removeCollection method, but it does not work.
    scProductTypeField objects remain in the database.

    $modx->addPackage('sc', $modx->getOption('core_path') . 'components/sc/model/');
    $_DATA = $scriptProperties['data'];
    if(! $modx->removeCollection('scProductType', array('`id` IN ('.$_DATA.')')) ) {
    	return $modx->error->failure( $modx->lexicon('sc.proc_err_remove') );
    }
    return $modx->error->success('');



    <object class="scProductType" table="sc_products_types" extends="xPDOSimpleObject">
        	<field key="alias" dbtype="varchar" precision="100" phptype="string" null="false" unique="true"/>
        	<field key="description" dbtype="varchar" precision="255" phptype="string" default="null"/>
        	<field key="options" dbtype="text" phptype="json" default="{}" />
        	<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
        		<column key="key" collation="A" null="false"/>
        	</index>
        	<composite alias="scProduct" class="scProduct" local="id" foreign="type" cardinality="many" owner="local" />
        	<composite alias="scProductTypeField" class="scProductTypeField" local="id" foreign="product_type" cardinality="many" owner="local" />
    </object>
    
    <object class="scProductTypeField" table="sc_products_types_fields" extends="xPDOSimpleObject">
        	<field key="product_type" dbtype="integer" precision="10" phptype="integer" null="false" />
        	<field key="name" dbtype="varchar" precision="100" phptype="string" null="false"/>
        	<field key="type" dbtype="varchar" precision="20" phptype="string" null="false"/>
        	<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
        		<column key="key" collation="A" null="false"/>
        	</index>
        	<aggregate alias="scProductType" class="scProductType" local="product_type" foreign="id" cardinality="one" owner="foreign" />
        	<composite alias="scProductField" class="scProductField" local="id" foreign="field" cardinality="many" owner="local" />
    </object>
    


    Anyone can help me?
      • 25922
      • 2 Posts
      At this time, I used the following solution:

      if( ! $modx->removeCollection('scProductType', array('`id` IN ('.$_DATA.')')) || ! $modx->removeCollection('scProductTypeField', array('`product_type` IN ('.$_DATA.')')) ) {
      	$modx->rollBack(); 
      	return $modx->error->failure( $modx->lexicon('sc.proc_err_remove') );
      }