Blame view

sources/3rdparty/doctrine/dbal/docs/examples/sharding/create_schema.php 1.9 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  <?php
  // create_schema.php
  use Doctrine\DBAL\Schema\Schema;
  use Doctrine\Shards\DBAL\SQLAzure\SQLAzureSchemaSynchronizer;
  
  require_once 'bootstrap.php';
  
  $schema = new Schema();
  
  $products = $schema->createTable('Products');
  $products->addColumn('ProductID', 'integer');
  $products->addColumn('SupplierID', 'integer');
  $products->addColumn('ProductName', 'string');
  $products->addColumn('Price', 'decimal', array('scale' => 2, 'precision' => 12));
  $products->setPrimaryKey(array('ProductID'));
  $products->addOption('azure.federated', true);
  
  $customers = $schema->createTable('Customers');
  $customers->addColumn('CustomerID', 'integer');
  $customers->addColumn('CompanyName', 'string');
  $customers->addColumn('FirstName', 'string');
  $customers->addColumn('LastName', 'string');
  $customers->setPrimaryKey(array('CustomerID'));
  $customers->addOption('azure.federated', true);
  $customers->addOption('azure.federatedOnColumnName', 'CustomerID');
  
  $orders = $schema->createTable('Orders');
  $orders->addColumn('CustomerID', 'integer');
  $orders->addColumn('OrderID', 'integer');
  $orders->addColumn('OrderDate', 'datetime');
  $orders->setPrimaryKey(array('CustomerID', 'OrderID'));
  $orders->addOption('azure.federated', true);
  $orders->addOption('azure.federatedOnColumnName', 'CustomerID');
  
  $orderItems = $schema->createTable('OrderItems');
  $orderItems->addColumn('CustomerID', 'integer');
  $orderItems->addColumn('OrderID', 'integer');
  $orderItems->addColumn('ProductID', 'integer');
  $orderItems->addColumn('Quantity', 'integer');
  $orderItems->setPrimaryKey(array('CustomerID', 'OrderID', 'ProductID'));
  $orderItems->addOption('azure.federated', true);
  $orderItems->addOption('azure.federatedOnColumnName', 'CustomerID');
  
  // Create the Schema + Federation:
  $synchronizer = new SQLAzureSchemaSynchronizer($conn, $shardManager);
  
  // Or jut look at the SQL:
  echo implode("
  ", $synchronizer->getCreateSchema($schema));
  
  $synchronizer->createSchema($schema);