/** * * @param Model $model * @param Objects $object * @return Objects */ public static function by_model(Model $model, Objects &$object = null, $prefix = null) { if ($object == null) { $object = Objects::objects($model); } $reflex = new ReflectionClass($model->get_called_class()); $properts = $reflex->getProperties(); $fullname = $model->get_fullname(); foreach ($properts as $propert) { $name = $propert->getName(); $value = $model->{"get" . $name}(); if ($value instanceof Constrain && $value->getType() == Constrain::FORAIN_KEY) { $refer_package = $value->getReferPackage(); $refer_model = $value->getReferModel(); Kernel::import($refer_package . "." . ucfirst($refer_model)); $fullrefer = $value->getFullRefer(); $refer_object = new $refer_model(); $pk = $refer_object->get_pk(); $pk_name = $pk->name(); $class = strtolower($refer_object->get_called_class()); if ($class == "user") { $fullclass = $class; $fullon = "{$fullname}.{$name} = {$class}.{$pk_name}"; } else { $fullclass = $refer_package . '_' . $class; $fullon = "{$fullname}.{$name} = {$fullrefer}.{$pk_name}"; } $object->join($fullclass, "{$fullon}"); if ($prefix != null) { $object->refer($fullclass, "{$fullon}"); } else { $object->refers[0] = $fullclass; array_push($object->basest, "{$name} = {$name}" . "__" . "pk"); } $object = self::by_model($refer_object, $object, ($prefix != null ? $prefix . "__" : "") . $name); } if ($value instanceof Constrain || $value instanceof Input) { if ($value instanceof Constrain && $value->getType() == Constrain::PRIMARY_KEY) { $col = "pk"; } else { $col = $name; } $object->select($fullname . "." . $name . " AS " . ($prefix != null ? $prefix . "__" : "") . $col); if ($prefix != null) { //var_dump($prefix . "---" . $name . "<br>"); $object->others($fullname . "." . $name . " AS " . ($prefix != null ? $prefix . "__" : "") . $col); } } } return $object; }