RedBeanPHP\DuplicationManager::setTables PHP Метод

setTables() публичный Метод

If the tables are available the duplication manager will not query them so this might be beneficial for performance. This method allows two array formats: array( TABLE1, TABLE2 ... ) or array( TABLE1 => array( COLUMN1, COLUMN2 ... ) ... )
public setTables ( array $tables ) : void
$tables array a table cache array
Результат void
    public function setTables($tables)
    {
        foreach ($tables as $key => $value) {
            if (is_numeric($key)) {
                $this->tables[] = $value;
            } else {
                $this->tables[] = $key;
                $this->columns[$key] = $value;
            }
        }
        $this->cacheTables = TRUE;
    }

Usage Example

Пример #1
0
 /**
  * Test duplication and caching.
  *
  * @return void
  */
 public function DupAndCache()
 {
     testpack('Dup() and Cache');
     $can = R::dispense('can')->setAttr('size', 3);
     $can->ownCoffee[] = R::dispense('coffee')->setAttr('color', 'black');
     $can->sharedTag[] = R::dispense('tag')->setAttr('name', 'cool');
     $can = R::load('can', R::store($can));
     $d = new DuplicationManager(R::getToolBox());
     $d->setCacheTables(TRUE);
     ob_start();
     R::debug(1);
     $x = $d->dup($can);
     $queries = ob_get_contents();
     R::debug(0);
     ob_end_clean();
     $len1 = strlen($queries);
     asrt($len1 > 40, TRUE);
     asrt(isset($x->ownCoffee), TRUE);
     asrt(count($x->ownCoffee), 1);
     asrt(isset($x->sharedTag), TRUE);
     asrt(count($x->sharedTag), 1);
     $cache = $d->getSchema();
     R::nuke();
     $can = R::dispense('can')->setAttr('size', 3);
     $can->ownCoffee[] = R::dispense('coffee')->setAttr('color', 'black');
     $can->sharedTag[] = R::dispense('tag')->setAttr('name', 'cool');
     $can = R::load('can', R::store($can));
     $d = new DuplicationManager(R::getToolBox());
     /**
      * $cache = '{"book": {
      *  "id": "INTEGER",
      *  "title": "TEXT"
      * }, "bean": {
      *  "id": "INTEGER",
      *  "prop": "INTEGER"
      * }, "pessoa": {
      *  "id": "INTEGER",
      *  "nome": "TEXT",
      *  "nome_meio": "TEXT",
      *  "sobrenome": "TEXT",
      *  "nascimento": "NUMERIC",
      *  "reg_owner": "TEXT"
      * }, "documento": {
      *  "id": "INTEGER",
      *  "nome_documento": "TEXT",
      *  "numero_documento": "TEXT",
      *  "reg_owner": "TEXT",
      *  "ownPessoa_id": "INTEGER"
      * }, "can": {
      *  "id": "INTEGER",
      *  "size": "INTEGER"
      * }, "coffee": {
      *  "id": "INTEGER",
      *  "color": "TEXT",
      *  "can_id": "INTEGER"
      * }, "tag": {
      *  "id": "INTEGER",
      *  "name": "TEXT"
      * }, "can_tag": {
      *  "id": "INTEGER",
      *  "tag_id": "INTEGER",
      *  "can_id": "INTEGER"
      * }}'
      */
     $d->setTables($cache);
     ob_start();
     R::debug(1);
     $x = $d->dup($can);
     $queries = ob_get_contents();
     ob_end_clean();
     R::debug(0);
     $len2 = strlen($queries);
     asrt(isset($x->ownCoffee), TRUE);
     asrt(count($x->ownCoffee), 1);
     asrt(isset($x->sharedTag), TRUE);
     asrt(count($x->sharedTag), 1);
     asrt(json_encode($cache), json_encode($d->getSchema()));
     asrt($len1 > $len2, TRUE);
 }