SELECT Product.*, PD.name FROM `opcart_product` AS `Product` JOIN `opcart_product_description` `PD` ON WHERE `PD`.`product_id` == 0 ORDER BY date_added DESC LIMIT 6
$query->toSQL(); returns:
SELECT Product.*, PD.name FROM `opcart_product` AS `Product` JOIN `opcart_product_description` `PD` ON WHERE `PD`.`product_id` == 0 ORDER BY date_added DESC LIMIT 6
There is no output after "ON". I’m not entirely sure how that is determined, but my next best guess is via relationships, because everything after "ON" is pretty messy.
<object class="Product" table="product" extends="xPDOObject"> <field key="product_id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" /> <field key="model" dbtype="varchar" precision="64" phptype="string" null="false" /> <field key="sku" dbtype="varchar" precision="64" phptype="string" null="false" /> <field key="location" dbtype="varchar" precision="128" phptype="string" null="false" /> <field key="quantity" dbtype="int" precision="4" phptype="integer" null="false" default="0" /> <field key="stock_status_id" dbtype="int" precision="11" phptype="integer" null="false" /> <field key="image" dbtype="varchar" precision="255" phptype="string" null="true" /> <field key="manufacturer_id" dbtype="int" precision="11" phptype="integer" null="false" /> <field key="shipping" dbtype="int" precision="1" phptype="integer" null="false" default="1" /> <field key="price" dbtype="decimal" precision="15,4" phptype="float" null="false" default="0.0000" /> <field key="tax_class_id" dbtype="int" precision="11" phptype="integer" null="false" /> <field key="date_available" dbtype="date" phptype="date" null="false" /> <field key="weight" dbtype="decimal" precision="5,2" phptype="float" null="false" default="0.00" /> <field key="weight_class_id" dbtype="int" precision="11" phptype="integer" null="false" default="0" /> <field key="length" dbtype="decimal" precision="5,2" phptype="float" null="false" default="0.00" /> <field key="width" dbtype="decimal" precision="5,2" phptype="float" null="false" default="0.00" /> <field key="height" dbtype="decimal" precision="5,2" phptype="float" null="false" default="0.00" /> <field key="length_class_id" dbtype="int" precision="11" phptype="integer" null="false" default="0" /> <field key="status" dbtype="int" precision="1" phptype="integer" null="false" default="0" /> <field key="date_added" dbtype="datetime" phptype="datetime" null="false" default="0000-00-00 00:00:00" /> <field key="date_modified" dbtype="datetime" phptype="datetime" null="false" default="0000-00-00 00:00:00" /> <field key="viewed" dbtype="int" precision="5" phptype="integer" null="false" default="0" /> <field key="sort_order" dbtype="int" precision="11" phptype="integer" null="false" default="0" /> <field key="subtract" dbtype="int" precision="1" phptype="integer" null="false" default="1" /> <field key="minimum" dbtype="int" precision="11" phptype="integer" null="false" default="1" /> <field key="cost" dbtype="decimal" precision="15,4" phptype="float" null="false" default="0.0000" /> <index alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE" > <column key="product_id" length="" collation="A" null="false" /> </index> <composite alias="ProductDescription" class="ProductDescription" local="product_id" foreign="product_id" cardinality="many" owner="local" /> </object> <object class="ProductDescription" table="product_description" extends="xPDOObject"> <field key="product_id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" /> <field key="language_id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" /> <field key="name" dbtype="varchar" precision="255" phptype="string" null="false" index="index" /> <field key="meta_keywords" dbtype="varchar" precision="255" phptype="string" null="false" /> <field key="meta_description" dbtype="varchar" precision="255" phptype="string" null="false" /> <field key="description" dbtype="text" phptype="string" null="false" /> <index alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE" > <column key="product_id" length="" collation="A" null="false" /> <column key="language_id" length="" collation="A" null="false" /> </index> <index alias="name" name="name" primary="false" unique="false" type="BTREE" > <column key="name" length="" collation="A" null="false" /> </index> <aggregate alias="Product" class="Product" local="product_id" foreign="product_id" cardinality="one" owner="foreign" /> </object>
<?php $mtime= microtime(); $mtime= explode(" ", $mtime); $mtime= $mtime[1] + $mtime[0]; $tstart= $mtime; //Customize this line based on the location of your script include_once (strtr(realpath(dirname(__FILE__)) . '/../../xpdo/xpdo.class.php', '\\', '/')); //note : this database does not have table prefixes $xpdo= new xPDO('mysql:host=localhost;dbname=THEDATABASENAME','THEDATABASEUSER','THEDATABASEPWD',''); $myPackage = 'exttest'; //A name I picked for testing // Set the package name and root path of that package $xpdo->setPackage($myPackage, XPDO_CORE_PATH . '../components/'); $xpdo->setDebug(true); $manager= $xpdo->getManager(); $generator= $manager->getGenerator(); $sources = array( 'config' => MODX_CORE_PATH . 'config/config.inc.php', 'package' => MODX_CORE_PATH . 'components/' . $myPackage . '/', 'model' => MODX_CORE_PATH. 'components/' . $myPackage . '/model/', 'schema' => MODX_CORE_PATH . 'components/' . $myPackage . '/schema/', ); if (! file_exists($sources['package'])) { mkdir($sources['package'],0777); } if (! file_exists($sources['model'])) { mkdir($sources['model'],0777); } if (! file_exists($sources['schema'])) { mkdir($sources['schema'],0777); } //Use this to create a schema from an existing database //Note again - no database table prefix $xml= $generator->writeSchema($sources['schema'] . $myPackage . '.mysql.schema.xml', $myPackage, 'xPDOObject', ''); //Use this to generate classes and maps from your schema // NOTE: by default, only maps are overwritten; delete class files if you want to regenerate classes $generator->parseSchema($sources['schema'] . $myPackage . '.mysql.schema.xml', $sources['model']); $mtime= microtime(); $mtime= explode(" ", $mtime); $mtime= $mtime[1] + $mtime[0]; $tend= $mtime; $totalTime= ($tend - $tstart); $totalTime= sprintf("%2.4f s", $totalTime); echo "\nExecution time: {$totalTime}\n"; exit ();
<?php $dsn = 'mysql:host=localhost;dbname=THEDATABASENAME;'; $xpdo = new xPDO($dsn,'THEDATABASEUSER','THEDATABASEPWD'); //$xpdo->setDebug(true); $myPackage = 'exttest'; $path = MODX_CORE_PATH . 'components/' . $myPackage . '/'; //note : database does not have table prefixes $result = $xpdo->addPackage($myPackage,$path. 'model/',''); if (! $result) { return 'failed to add package'; } //$query = $xpdo->newQuery('Tracks'); //Tracks is associated with one of the tables. See schema file //$query->where(array('cd:=' => 3)); //want songs on cd 3 $query = $xpdo->query('SELECT *'); //select all $songs = $xpdo->getCollection('Tracks',$query); //Tracks is associated with one of the tables. See schema file $output = '<p>Total: '. count($songs) . '</p>'; foreach($songs as $song) { $output .= '<p>Title: ' . $song->get('title'); $output .= '<p>Price: ' . $song->get('price'); $output .= '<br />CD: ' . $song->get('cd') . '<br /></p>'; } return $output;
<?php $xpdo= new xPDO('mysql:host=localhost;dbname=myDBName','myDBUser','myDBPass','myDBPrefix_'); $manager = $xpdo->getManager(); $generator = $manager->getGenerator(); $generator->parseSchema('ocLatestProducts.mysql.schema.xml','/core/components/ocLatestProducts/model/');