Exemple #1
0
 public function _init_dynamic(Yada_Model $model, $field)
 {
     if (!isset($model->_init['fields'])) {
         $model->_init['fields'] = array();
     }
     if (!isset($model->_init['fields'][$field])) {
         $through = Yada::field('Foreign');
         $this->through = $through;
         $through->related = $this;
         $model->_init['fields'][$field] = $through;
     }
     $related = $this->related;
     if (is_array($related->through)) {
         list($m, $field) = $related->through;
     } else {
         $field = $this->name;
     }
     if (!isset($model->_init['fields'][$field])) {
         $link = Yada::field('Foreign');
         $link->related = $related;
         $link->through = $through;
         $through->through = $link;
         $model->_init['fields'][$field] = $link;
     }
     if (!isset($model->_init['table'])) {
         $table = array();
         $meta = $this->meta->meta($this->model);
         $table[] = $meta->offsetExists('table') ? $meta->table : $meta->plural;
         $meta = $this->meta->meta($related->model);
         $table[] = $meta->offsetExists('table') ? $meta->table : $meta->plural;
         sort($table);
         $model->_init['table'] = implode('_', $table);
     }
 }
Exemple #2
0
 public static function initialize(Yada_Model $model, Yada_Meta $meta)
 {
     $meta->initialize(array('fields' => array('id' => Yada::field('Primary'), 'test2' => Yada::field('Foreign', array('related' => array('Test2', 'test'))), 'name' => Yada::field('Name'), 'description' => Yada::field('String'), 'value' => Yada::field('Integer'), 'condition' => Yada::field('Boolean'), 'number' => Yada::field('Float'), 'stamp' => Yada::field('Timestamp'), 'date' => Yada::field('DateTime'), 'test3' => Yada::field('ManyToMany', array('related' => array('Test3', 'test')))), 'table' => 'tests'));
 }