updated and simplified examples
This commit is contained in:
parent
0d1677a9b4
commit
110c11dbb2
5 changed files with 70 additions and 179 deletions
|
@ -2,30 +2,33 @@
|
||||||
|
|
||||||
use Destructr\Factory;
|
use Destructr\Factory;
|
||||||
|
|
||||||
class ExampleFactory extends Factory {
|
class ExampleFactory extends Factory
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* Example factory with a different schema, to index on random_data, but not
|
* Example factory with a different schema, to index on random_data for faster searching
|
||||||
* by dso_type.
|
|
||||||
*
|
|
||||||
* Also uses a different column name for dso.id
|
|
||||||
*/
|
*/
|
||||||
protected $schema = [
|
protected $schema = [
|
||||||
'dso.id' => [
|
'dso.id' => [
|
||||||
'name'=>'dso_id_other_name',
|
'name' => 'dso_id', //column name to be used
|
||||||
'type'=>'VARCHAR(16)',
|
'type' => 'VARCHAR(16)', //column type
|
||||||
|
'index' => 'BTREE', //whether/how to index
|
||||||
|
'unique' => true, //whether column should be unique
|
||||||
|
'primary' => true, //whether column should be the primary key
|
||||||
|
],
|
||||||
|
'dso.type' => [
|
||||||
|
'name' => 'dso_type',
|
||||||
|
'type' => 'VARCHAR(30)',
|
||||||
'index' => 'BTREE',
|
'index' => 'BTREE',
|
||||||
'unique' => true,
|
|
||||||
'primary' => true
|
|
||||||
],
|
],
|
||||||
'dso.deleted' => [
|
'dso.deleted' => [
|
||||||
'name'=>'dso_deleted',
|
'name' => 'dso_deleted',
|
||||||
'type'=>'INT',
|
'type' => 'BIGINT',
|
||||||
'index'=>'BTREE'
|
'index' => 'BTREE',
|
||||||
],
|
],
|
||||||
'random_data' => [
|
'random_data' => [
|
||||||
'name'=>'random_data',
|
'name' => 'random_data',
|
||||||
'type'=>'VARCHAR(100)',
|
'type' => 'VARCHAR(64)',
|
||||||
'index'=>'BTREE'
|
'index' => 'BTREE',
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
50
examples/example_use.php
Normal file
50
examples/example_use.php
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file demonstrates some basic uses of Destructr, from the creation
|
||||||
|
* of a connection and factory, through to creating, inserting, updating,
|
||||||
|
* deleting, and querying data.
|
||||||
|
*/
|
||||||
|
include __DIR__ . '/../vendor/autoload.php';
|
||||||
|
|
||||||
|
/*
|
||||||
|
SQLite drivers can be created by the default factory.
|
||||||
|
A charset of UTF8 should be specified, to avoid character encoding
|
||||||
|
issues.
|
||||||
|
*/
|
||||||
|
$driver = \Destructr\DriverFactory::factory(
|
||||||
|
'sqlite:' . __DIR__ . '/example.sqlite'
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Creates a factory using the table 'example_table', and creates
|
||||||
|
the necessary table. Note that prepareEnvironment() can safely be called
|
||||||
|
multiple times. updateEnvironment shouldn't be used this way in production,
|
||||||
|
as if it is called more than once per second during a schema change, errors
|
||||||
|
may be introduced.
|
||||||
|
*/
|
||||||
|
include __DIR__ . '/example_factory.php';
|
||||||
|
$factory = new ExampleFactory($driver, 'example_table');
|
||||||
|
$factory->prepareEnvironment();
|
||||||
|
$factory->updateEnvironment();
|
||||||
|
|
||||||
|
/*
|
||||||
|
Inserting a record
|
||||||
|
*/
|
||||||
|
$obj = $factory->create(
|
||||||
|
[
|
||||||
|
'dso.type'=>'foobar',
|
||||||
|
'random_data' => md5(rand())
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$obj->insert();
|
||||||
|
|
||||||
|
/*
|
||||||
|
Search by random data field, which is indexed due to the
|
||||||
|
ExampleFactory class' $schema property.
|
||||||
|
*/
|
||||||
|
$search = $factory->search();
|
||||||
|
$search->where('${random_data} LIKE :q');
|
||||||
|
$result = $search->execute(['q'=>'ab%']);
|
||||||
|
foreach($result as $r) {
|
||||||
|
var_dump($r->get());
|
||||||
|
}
|
|
@ -1,52 +0,0 @@
|
||||||
<?php
|
|
||||||
include __DIR__ . '/../vendor/autoload.php';
|
|
||||||
|
|
||||||
/*
|
|
||||||
Constructing MariaDB drivers should be done using factoryFromPDO,
|
|
||||||
so that they use the MariaDB driver instead of the MySQL driver.
|
|
||||||
*/
|
|
||||||
$driver = \Destructr\DriverFactory::factoryFromPDO(
|
|
||||||
new \PDO(
|
|
||||||
'mysql:server=localhost;port=3307;dbname=destructr',
|
|
||||||
'root'
|
|
||||||
),
|
|
||||||
'mariadb'
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Creates a factory using the table 'example_table', and creates
|
|
||||||
the necessary table. Note that prepareEnvironment() can safely be called
|
|
||||||
multiple times.
|
|
||||||
*/
|
|
||||||
include __DIR__ . '/example_factory.php';
|
|
||||||
$factory = new ExampleFactory($driver, 'example_table');
|
|
||||||
$factory->prepareEnvironment();
|
|
||||||
$factory->updateEnvironment();
|
|
||||||
|
|
||||||
/*
|
|
||||||
The following can be uncommented to insert dummy records
|
|
||||||
into the given table.
|
|
||||||
*/
|
|
||||||
// for($i = 0; $i < 10; $i++) {
|
|
||||||
// $obj = $factory->create(
|
|
||||||
// [
|
|
||||||
// 'dso.type'=>'foobar',
|
|
||||||
// 'random_data' => md5(rand())
|
|
||||||
// ]
|
|
||||||
// );
|
|
||||||
// $obj->insert();
|
|
||||||
// }
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search by random data field
|
|
||||||
*/
|
|
||||||
$search = $factory->search();
|
|
||||||
$search->where('${random_data} = :q');
|
|
||||||
$result = $search->execute(['q'=>'rw7nivub9bhhh3t4']);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search by dso.id, which is much faster because it's indexed
|
|
||||||
*/
|
|
||||||
// $search = $factory->search();
|
|
||||||
// $search->where('${dso.id} = :q');
|
|
||||||
// $result = $search->execute(['q'=>'rw7nivub9bhhh3t4']);
|
|
|
@ -1,52 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Destructr\Factory;
|
|
||||||
|
|
||||||
include __DIR__ . '/../vendor/autoload.php';
|
|
||||||
|
|
||||||
/*
|
|
||||||
Constructing MariaDB drivers should be done using factoryFromPDO,
|
|
||||||
so that they use the MariaDB driver instead of the MySQL driver.
|
|
||||||
*/
|
|
||||||
$driver = \Destructr\DriverFactory::factory(
|
|
||||||
'mysql:server=localhost;port=3306;dbname=destructr',
|
|
||||||
'root'
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Creates a factory using the table 'example_table', and creates
|
|
||||||
the necessary table. Note that prepareEnvironment() can safely be called
|
|
||||||
multiple times.
|
|
||||||
*/
|
|
||||||
include __DIR__ . '/example_factory.php';
|
|
||||||
$factory = new Factory($driver, 'example_table');
|
|
||||||
$factory->prepareEnvironment();
|
|
||||||
$factory->updateEnvironment();
|
|
||||||
|
|
||||||
/*
|
|
||||||
The following can be uncommented to insert dummy records
|
|
||||||
into the given table.
|
|
||||||
*/
|
|
||||||
// for($i = 0; $i < 100; $i++) {
|
|
||||||
// $obj = $factory->create(
|
|
||||||
// [
|
|
||||||
// 'dso.type'=>'foobar',
|
|
||||||
// 'random_data' => md5(rand())
|
|
||||||
// ]
|
|
||||||
// );
|
|
||||||
// $obj->insert();
|
|
||||||
// }
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search by random data field
|
|
||||||
*/
|
|
||||||
// $search = $factory->search();
|
|
||||||
// $search->where('${random_data} = :q');
|
|
||||||
// $result = $search->execute(['q'=>'rw7nivub9bhhh3t4']);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search by dso.id, which is much faster because it's indexed
|
|
||||||
*/
|
|
||||||
// $search = $factory->search();
|
|
||||||
// $search->where('${dso.id} = :q');
|
|
||||||
// $result = $search->execute(['q'=>'rw7nivub9bhhh3t4']);
|
|
|
@ -1,58 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Destructr\Factory;
|
|
||||||
|
|
||||||
include __DIR__ . '/../vendor/autoload.php';
|
|
||||||
|
|
||||||
/*
|
|
||||||
SQLite drivers can be created by the default factory.
|
|
||||||
A charset of UTF8 should be specified, to avoid character encoding
|
|
||||||
issues.
|
|
||||||
*/
|
|
||||||
$driver = \Destructr\DriverFactory::factory(
|
|
||||||
'sqlite:' . __DIR__ . '/example.sqlite'
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Creates a factory using the table 'example_table', and creates
|
|
||||||
the necessary table. Note that prepareEnvironment() can safely be called
|
|
||||||
multiple times.
|
|
||||||
*/
|
|
||||||
include __DIR__ . '/example_factory.php';
|
|
||||||
$factory = new Factory($driver, 'example_table');
|
|
||||||
$factory->prepareEnvironment();
|
|
||||||
$factory->updateEnvironment();
|
|
||||||
|
|
||||||
/*
|
|
||||||
The following can be uncommented to insert dummy records
|
|
||||||
into the given table.
|
|
||||||
*/
|
|
||||||
// ini_set('max_execution_time','0');
|
|
||||||
// for($i = 0; $i < 10; $i++) {
|
|
||||||
// $obj = $factory->create(
|
|
||||||
// [
|
|
||||||
// 'dso.type'=>'foobar',
|
|
||||||
// 'random_data' => md5(rand())
|
|
||||||
// ]
|
|
||||||
// );
|
|
||||||
// $obj->insert();
|
|
||||||
// }
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search by random data field
|
|
||||||
*/
|
|
||||||
$search = $factory->search();
|
|
||||||
$search->where('${random_data} LIKE :q');
|
|
||||||
$result = $search->execute(['q'=>'%ab%']);
|
|
||||||
foreach($result as $r) {
|
|
||||||
var_dump($r->get());
|
|
||||||
$r['random_data_2'] = md5(rand());
|
|
||||||
$r->update();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search by dso.id, which is much faster because it's indexed
|
|
||||||
*/
|
|
||||||
// $search = $factory->search();
|
|
||||||
// $search->where('${dso.id} = :q');
|
|
||||||
// $result = $search->execute(['q'=>'rw7nivub9bhhh3t4']);
|
|
Loading…
Reference in a new issue