function init() { if ($this->_inited) { return $this; } parent::init(); $p = $this->_init_config; $this->source_key = !empty($p['source_key']) ? $p['source_key'] : reset($this->source_meta->idname); $this->target_key = !empty($p['target_key']) ? $p['target_key'] : reset($this->source_meta->idname); unset($this->_init_config); return $this; }
function init() { if ($this->_inited) { return $this; } parent::init(); $p = $this->_init_config; if (empty($p['mid_class'])) { // 如果没有指定中间表对应的 ActiveRecord 类,则使用表数据入口直接处理中间表 $this->mid_meta = null; if (empty($p['mid_table_name'])) { // 尝试自动确定中间表名称 $t1 = $this->source_meta->table->name; $t2 = $this->target_meta->table->name; if ($t1 <= $t2) { $mid_table_name = $t1 . '_has_' . $t2; } else { $mid_table_name = $t2 . '_has_' . $t1; } } else { $mid_table_name = $p['mid_table_name']; } $this->mid_table = new QDB_Table(array('name' => $mid_table_name)); } else { // 如果中间表作为实体,则由指定的 ActiveRecord 继承类负责处理中间表 $this->mid_meta = QDB_ActiveRecord_Meta::instance($p['mid_class']); $this->mid_table = $this->mid_meta->table; } $this->source_key = !empty($p['source_key']) ? $p['source_key'] : reset($this->source_meta->idname); $this->target_key = !empty($p['target_key']) ? $p['target_key'] : reset($this->target_meta->idname); $this->mid_source_key = !empty($p['mid_source_key']) ? $p['mid_source_key'] : reset($this->source_meta->idname); $this->mid_target_key = !empty($p['mid_target_key']) ? $p['mid_target_key'] : reset($this->target_meta->idname); $this->mid_mapping_to = !empty($p['mid_mapping_to']) ? $p['mid_mapping_to'] : 'mid_data'; $class = $this->target_meta->class_name; // $this->source_meta->addDynamicMethod("bind{$class}", array($this, 'bindTarget')); // $this->source_meta->addDynamicMethod("unbind{$class}", array($this, 'unbindTarget')); unset($this->_init_config); return $this; }