/**
  * Generates set of code based on data.
  * 
  * @return array
  */
 public function generate()
 {
     $this->prepareData($this->data);
     $columnFields = ['name', 'description', 'label'];
     $table = $this->describe->getTable($this->data['name']);
     foreach ($table as $column) {
         if ($column->isAutoIncrement()) {
             continue;
         }
         $field = strtolower($column->getField());
         $method = 'set_' . $field;
         $this->data['camel'][$field] = lcfirst(camelize($method));
         $this->data['underscore'][$field] = underscore($method);
         array_push($this->data['columns'], $field);
         if ($column->isForeignKey()) {
             $referencedTable = Tools::stripTableSchema($column->getReferencedTable());
             $this->data['foreignKeys'][$field] = $referencedTable;
             array_push($this->data['models'], $referencedTable);
             $dropdown = ['list' => plural($referencedTable), 'table' => $referencedTable, 'field' => $field];
             if (!in_array($field, $columnFields)) {
                 $dropdown['field'] = $this->describe->getPrimaryKey($referencedTable);
             }
             array_push($this->data['dropdowns'], $dropdown);
         }
     }
     return $this->data;
 }
Beispiel #2
0
 /**
  * Gets the primary keys based on specified field.
  *
  * @param  array  $data
  * @param  string $field
  * @param  string $referencedTable
  * @return array
  */
 protected function getPrimaryKey(array $data, $field, $referencedTable)
 {
     $accessor = 'get_' . $this->describe->getPrimaryKey($referencedTable);
     $data['primaryKeys'][$field] = $accessor;
     if ($data['isCamel']) {
         $camelized = camelize($data['primaryKeys'][$field]);
         $data['primaryKeys'][$field] = $camelized;
     }
     return $data;
 }
Beispiel #3
0
 /**
  * Generates set of code based on data.
  * 
  * @return array
  */
 public function generate()
 {
     $this->prepareData($this->data);
     foreach ($this->data['columns'] as $column) {
         $field = strtolower($column->getField());
         $accessor = 'get_' . $field;
         $mutator = 'set_' . $field;
         $this->data['camel'][$field] = ['field' => lcfirst(camelize($field)), 'accessor' => lcfirst(camelize($accessor)), 'mutator' => lcfirst(camelize($mutator))];
         $this->data['underscore'][$field] = ['field' => lcfirst(underscore($field)), 'accessor' => lcfirst(underscore($accessor)), 'mutator' => lcfirst(underscore($mutator))];
         if ($column->isForeignKey()) {
             $field = $column->getField();
             array_push($this->data['indexes'], $field);
             $this->data['primaryKeys'][$field] = 'get_' . $this->describe->getPrimaryKey($column->getReferencedTable());
             if ($this->data['isCamel']) {
                 $this->data['primaryKeys'][$field] = camelize($this->data['primaryKeys'][$field]);
             }
         }
         $column->setReferencedTable(Tools::stripTableSchema($column->getReferencedTable()));
     }
     return $this->data;
 }
Beispiel #4
0
 /**
  * Generates set of code based on data.
  * 
  * @return array
  */
 public function generate()
 {
     $this->prepareData($this->data);
     foreach ($this->data['columns'] as $column) {
         $field = strtolower($column->getField());
         $accessor = 'get_' . $field;
         $mutator = 'set_' . $field;
         $this->data['camel'][$field] = ['field' => lcfirst(camelize($field)), 'accessor' => lcfirst(camelize($accessor)), 'mutator' => lcfirst(camelize($mutator))];
         $this->data['underscore'][$field] = ['field' => lcfirst(underscore($field)), 'accessor' => lcfirst(underscore($accessor)), 'mutator' => lcfirst(underscore($mutator))];
         if ($column->isForeignKey()) {
             $referencedTable = Tools::stripTableSchema($column->getReferencedTable());
             $this->data['foreignKeys'][$field] = plural($referencedTable);
             $singular = $field . '_singular';
             $this->data['foreignKeys'][$singular] = singular($referencedTable);
             $this->data['primaryKeys'][$field] = 'get_' . $this->describe->getPrimaryKey($referencedTable);
             if ($this->data['isCamel']) {
                 $this->data['primaryKeys'][$field] = camelize($this->data['primaryKeys'][$field]);
             }
         }
     }
     return $this->data;
 }
Beispiel #5
0
 /**
  * Sets specified fields for foreign key values.
  * 
  * @param \Rougin\Describe\Column $column
  */
 public function setForeignKey(Column $column, array &$data, array &$keywords)
 {
     if (!$column->isForeignKey()) {
         return;
     }
     $config = Configuration::get();
     $template = $this->foreignColumnTemplate;
     $data['methods'] .= "\n    " . $this->mutatorMethodTemplate . "\n    ";
     $data['methods'] .= $this->accessorMethodTemplate;
     $referencedTable = $this->stripTableSchema($column->getReferencedTable());
     $keywords['{accessorName}'] = Inflector::camelize('get_' . $referencedTable);
     $keywords['{mutatorName}'] = Inflector::camelize('set_' . $referencedTable);
     $keywords['{primaryKey}'] = $this->describe->getPrimaryKey($referencedTable);
     $keywords['{variable}'] = $referencedTable;
     $keywords['{referencedTable}'] = ucfirst($referencedTable);
     $keywords['{description}'] = $referencedTable;
     $keywords['{class}'] = ucfirst($referencedTable) . ' ';
     $keywords['{datatype}'] = '\\' . $config->application->name . '\\' . $config->namespaces->models . '\\' . ucfirst($referencedTable);
     $template = str_replace(array_keys($keywords), array_values($keywords), $template);
     $data['methods'] = str_replace(array_keys($keywords), array_values($keywords), $data['methods']);
     $data['columns'] .= $template;
 }