| @@ 65-113 (lines=49) @@ | ||
| 62 | * |
|
| 63 | * @return $this |
|
| 64 | */ |
|
| 65 | private function replaceEagerCode() |
|
| 66 | { |
|
| 67 | $storeCommands = $updateCommands = $ruleCommands = $useCommands = ''; |
|
| 68 | $eagerConditions = $eagerJoins = ''; |
|
| 69 | ||
| 70 | $storeEagerStubOriginal = File::get($this->stubsDirectory . 'StoreEager.php'); |
|
| 71 | $updateEagerStubOriginal = File::get($this->stubsDirectory . 'UpdateEager.php'); |
|
| 72 | $rulesEagerStubOriginal = File::get($this->stubsDirectory . 'RulesEager.php'); |
|
| 73 | $useEagerStubOriginal = File::get($this->stubsDirectory . 'UseEager.php'); |
|
| 74 | $joinEagerStubOriginal = File::get($this->stubsDirectory . 'SearchConditions/JoinEager.php'); |
|
| 75 | ||
| 76 | foreach ($this->modelData->fields as $field) |
|
| 77 | { |
|
| 78 | ||
| 79 | // Check foreign key |
|
| 80 | if ($field->foreignKey && isset($field->foreignKey->eager) && $field->foreignKey->eager) |
|
| 81 | { |
|
| 82 | ||
| 83 | $storeCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $storeEagerStubOriginal)); |
|
| 84 | $updateCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $updateEagerStubOriginal)) ; |
|
| 85 | $ruleCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $rulesEagerStubOriginal)) ; |
|
| 86 | $useCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $useEagerStubOriginal)) ; |
|
| 87 | $eagerJoins .= $this->replaceForeingStrings($field, $joinEagerStubOriginal) ; |
|
| 88 | ||
| 89 | // search eager fields |
|
| 90 | $foreignModelData = $this->getModelData($field->foreignKey->table); |
|
| 91 | $foreignControllerCompiler = new ControllerCompiler($this->scaffolderConfig, $foreignModelData); |
|
| 92 | $foreignControllerCompiler->setEagerTable($this->modelData->tableName); |
|
| 93 | $eagerConditions .= $foreignControllerCompiler->getSearchConditions(); |
|
| 94 | $eagerUniqueRules = $foreignControllerCompiler->getEagerUniqueRules(); |
|
| 95 | $eagerUniqueRules = str_replace("{{class_name_lw}}", strtolower($this->modelName), $eagerUniqueRules); |
|
| 96 | $eagerUniqueRules = str_replace("{{field}}", $field->name, $eagerUniqueRules); |
|
| 97 | $ruleCommands = str_replace('{{unique_eager_rules}}', $eagerUniqueRules, $ruleCommands) ; |
|
| 98 | } |
|
| 99 | ||
| 100 | } |
|
| 101 | ||
| 102 | $this->stub = str_replace('{{store_eager_objects}}', $storeCommands, $this->stub); |
|
| 103 | $this->stub = str_replace('{{update_eager_objects}}', $updateCommands, $this->stub); |
|
| 104 | $this->stub = str_replace('{{rules_eager}}', $ruleCommands, $this->stub); |
|
| 105 | $this->stub = str_replace('{{eager_use_classes}}', $useCommands, $this->stub); |
|
| 106 | $this->stub = str_replace('{{eager_joins}}', $eagerJoins, $this->stub); |
|
| 107 | $this->stub = str_replace('{{eager_conditions}}', $eagerConditions, $this->stub); |
|
| 108 | $this->stub = str_replace('{{eager_table}}', $this->eagerTable, $this->stub); |
|
| 109 | ||
| 110 | ||
| 111 | ||
| 112 | return $this; |
|
| 113 | } |
|
| 114 | ||
| 115 | ||
| 116 | public function replaceSortConditions() { |
|
| @@ 338-386 (lines=49) @@ | ||
| 335 | * |
|
| 336 | * @return $this |
|
| 337 | */ |
|
| 338 | private function replaceEagerCode() |
|
| 339 | { |
|
| 340 | $storeCommands = $updateCommands = $ruleCommands = $useCommands = ''; |
|
| 341 | $eagerConditions = $eagerJoins = ''; |
|
| 342 | ||
| 343 | $storeEagerStubOriginal = File::get($this->stubsDirectory . 'StoreEager.php'); |
|
| 344 | $updateEagerStubOriginal = File::get($this->stubsDirectory . 'UpdateEager.php'); |
|
| 345 | $rulesEagerStubOriginal = File::get($this->stubsDirectory . 'RulesEager.php'); |
|
| 346 | $useEagerStubOriginal = File::get($this->stubsDirectory . 'UseEager.php'); |
|
| 347 | $joinEagerStubOriginal = File::get($this->stubsDirectory . 'SearchConditions/JoinEager.php'); |
|
| 348 | ||
| 349 | foreach ($this->modelData->fields as $field) |
|
| 350 | { |
|
| 351 | ||
| 352 | // Check foreign key |
|
| 353 | if ($field->foreignKey && isset($field->foreignKey->eager) && $field->foreignKey->eager) |
|
| 354 | { |
|
| 355 | ||
| 356 | $storeCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $storeEagerStubOriginal)); |
|
| 357 | $updateCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $updateEagerStubOriginal)) ; |
|
| 358 | $ruleCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $rulesEagerStubOriginal)) ; |
|
| 359 | $useCommands .= str_replace('{{foreign_model_name}}', CamelCase::convertToCamelCase($field->foreignKey->table), $this->replaceForeingStrings($field, $useEagerStubOriginal)) ; |
|
| 360 | $eagerJoins .= $this->replaceForeingStrings($field, $joinEagerStubOriginal) ; |
|
| 361 | ||
| 362 | // search eager fields |
|
| 363 | $foreignModelData = $this->getModelData($field->foreignKey->table); |
|
| 364 | $foreignControllerCompiler = new ControllerCompiler($this->scaffolderConfig, $foreignModelData); |
|
| 365 | $foreignControllerCompiler->setEagerTable($this->modelData->tableName); |
|
| 366 | $eagerConditions .= $foreignControllerCompiler->getSearchConditions(); |
|
| 367 | $eagerUniqueRules = $foreignControllerCompiler->getEagerUniqueRules(); |
|
| 368 | $eagerUniqueRules = str_replace("{{class_name_lw}}", strtolower($this->modelName), $eagerUniqueRules); |
|
| 369 | $eagerUniqueRules = str_replace("{{field}}", $field->name, $eagerUniqueRules); |
|
| 370 | $ruleCommands = str_replace('{{unique_eager_rules}}', $eagerUniqueRules, $ruleCommands) ; |
|
| 371 | } |
|
| 372 | ||
| 373 | } |
|
| 374 | ||
| 375 | $this->stub = str_replace('{{store_eager_objects}}', $storeCommands, $this->stub); |
|
| 376 | $this->stub = str_replace('{{update_eager_objects}}', $updateCommands, $this->stub); |
|
| 377 | $this->stub = str_replace('{{rules_eager}}', $ruleCommands, $this->stub); |
|
| 378 | $this->stub = str_replace('{{eager_use_classes}}', $useCommands, $this->stub); |
|
| 379 | $this->stub = str_replace('{{eager_joins}}', $eagerJoins, $this->stub); |
|
| 380 | $this->stub = str_replace('{{eager_conditions}}', $eagerConditions, $this->stub); |
|
| 381 | $this->stub = str_replace('{{eager_table}}', $this->eagerTable, $this->stub); |
|
| 382 | ||
| 383 | ||
| 384 | ||
| 385 | return $this; |
|
| 386 | } |
|
| 387 | ||
| 388 | /** |
|
| 389 | * replace relationship tables |
|