예제 #1
0
파일: po_store.php 프로젝트: bmdevel/ezc
 protected function setUpEmptyTestTree()
 {
     $store = new ezcTreePersistentObjectDataStore($this->session, 'FileEntry', 'id');
     $tree = ezcTreeDbNestedSet::create($this->dbh, 'nested_set', $store);
     $this->emptyTables();
     return $tree;
 }
예제 #2
0
 protected function setUpEmptyTestTree($dataTable = 'data', $dataField = 'data', $indexTableSuffix = '')
 {
     $store = new ezcTreeDbExternalTableDataStore($this->dbh, $dataTable, 'id', $dataField);
     $tree = ezcTreeDbNestedSet::create($this->dbh, 'nested_set' . $indexTableSuffix, $store);
     $this->emptyTables();
     return $tree;
 }
<?php

require_once 'tutorial_autoload.php';
$dbh = ezcDbFactory::create('sqlite://:memory:');
$dbh->exec(<<<ENDSQL
    CREATE TABLE nested_set (
        'id' varchar(255) NOT NULL,
        'parent_id' varchar(255),
        'lft' integer NOT NULL,
        'rgt' integer NOT NULL
    );
    CREATE UNIQUE INDEX 'nested_set_pri' on 'nested_set' ( 'id' );
    CREATE INDEX 'nested_set_left' on 'nested_set' ( 'lft' );
    CREATE INDEX 'nested_set_right' on 'nested_set' ( 'rgt' );

    CREATE TABLE data (
        'node_id' varchar(255) NOT NULL,
        'data_field' varchar(255) NOT NULL
    );
    CREATE UNIQUE INDEX 'data_pri' on 'data' ( 'node_id' );
ENDSQL
);
$store = new ezcTreeDbExternalTableDataStore($dbh, 'data', 'node_id', 'data_field');
$tree = new ezcTreeDbNestedSet($dbh, 'nested_set', $store);
$tree->setRootNode($rootNode = $tree->createNode('Elements', 'Elements'));
$rootNode->addChild($nonMetal = $tree->createNode('NonMetals', 'Non-Metals'));
$rootNode->addChild($nobleGasses = $tree->createNode('NobleGasses', 'Noble Gasses'));
$nonMetal->addChild($tree->createNode('H', 'Hydrogen'));
echo $tree->fetchNodeById('H')->data, "\n";
    CREATE INDEX 'nested_set_left' on 'nested_set' ( 'lft' );
    CREATE INDEX 'nested_set_right' on 'nested_set' ( 'rgt' );

    CREATE TABLE data (
        'node_id' varchar(255) NOT NULL,
        'melting_temp_k' float,
        'boiling_temp_k' float
    );
    CREATE UNIQUE INDEX 'data_pri' on 'data' ( 'node_id' );
ENDSQL
);
// Create the example Persistent Object definition files and stub classes
$dbSchema = ezcDbSchema::createFromDb($dbh);
$writer1 = new ezcDbSchemaPersistentWriter(true);
$writer2 = new ezcDbSchemaPersistentClassWriter(true);
$writer1->saveToFile('files/po_defs', $dbSchema);
$writer2->saveToFile('files/classes', $dbSchema);
require 'files/classes/data.php';
// Setup the store and tree
$session = new ezcPersistentSession($dbh, new ezcPersistentCodeManager("files/po_defs"));
$store = new ezcTreePersistentObjectDataStore($session, 'data', 'node_id');
$tree = new ezcTreeDbNestedSet($dbh, 'nested_set', $store);
// Insert data
$metal = new data();
$tree->setRootNode($root = $tree->createNode('Metals', $metal));
$iron = new data();
$iron->setState(array('melting_temp_k' => 1811, 'boiling_temp_k' => 3134));
$root->addChild($tree->createNode('Fe', $iron));
// Fetch data
$fe = $tree->fetchNodeById('Fe')->data;
var_dump($fe);
require_once 'tutorial_autoload.php';
// Setup the database tables
$dbh = ezcDbFactory::create('sqlite://:memory:');
$dbh->exec(<<<ENDSQL
    CREATE TABLE nested_set (
        'id' varchar(255) NOT NULL,
        'parent_id' varchar(255),
        'lft' integer NOT NULL,
        'rgt' integer NOT NULL
    );
    CREATE UNIQUE INDEX 'nested_set_pri' on 'nested_set' ( 'id' );
    CREATE INDEX 'nested_set_left' on 'nested_set' ( 'lft' );
    CREATE INDEX 'nested_set_right' on 'nested_set' ( 'rgt' );

    CREATE TABLE data (
        'node_id' varchar(255) NOT NULL,
        'melting_temp_k' float,
        'boiling_temp_k' float
    );
    CREATE UNIQUE INDEX 'data_pri' on 'data' ( 'node_id' );
ENDSQL
);
// Setup the store and tree
$store = new ezcTreeDbExternalTableDataStore($dbh, 'data', 'node_id');
$tree = new ezcTreeDbNestedSet($dbh, 'nested_set', $store);
// Insert data
$tree->setRootNode($root = $tree->createNode('Metals', array()));
$root->addChild($tree->createNode('Fe', array('melting_temp_K' => 1811, 'boiling_temp_K' => 3134)));
// Fetch data
var_dump($tree->fetchNodeById('Fe')->data);