@@ 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 |