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); } }
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')); }