Browse Source

Fix belongs_to relationship. Fix exist/existelse being too greedy

Nathaniel van Diepen 6 years ago
parent
commit
4861154b06
2 changed files with 5 additions and 4 deletions
  1. 2 2
      Data/template.class.php
  2. 3 2
      orm.abstract.class.php

+ 2 - 2
Data/template.class.php

@@ -35,8 +35,8 @@
 			'rawmatch'=>'/\{@([^#\/?_][^}\n]*?)\}/i',
 			'rawparentmatch'=>'/\{@\.\.\/([^#\/?_][^}\n]*?)\}/i',
 			'each'=>'/\{#each ([^}]*)\}([\S\s]*)\{\/each \1\}/i',
-			'exist'=>'/\{#exist ([^}]*)\}([\S\s]*)\{\/exist \1\}/i',
-			'existelse'=>'/\{#exist ([^}]*)\}([\S\s]*)\{#else \1\}([\S\s]*)\{\/exist \1\}/i',
+			'exist'=>'/\{#exist ([^}]*)\}([\S\s]*)\{\/exist \1\}/iU',
+			'existelse'=>'/\{#exist ([^}]*)\}([\S\s]*)\{#else \1\}([\S\s]*)\{\/exist \1\}/iU',
 			'ignore'=>'/\{#ignore\}([\S\s]*)\{\/ignore\}/i',
 			'ignored'=>'/\{#ignored (\d+?)\}/i',
 			'gettext'=>"/{_([^,}]+)(?:, ?([^},]+))*\}/i",

+ 3 - 2
orm.abstract.class.php

@@ -34,6 +34,7 @@
 						$aliases['belongs_to'][$alias] = array_merge(
 							[
 								'model'=>$alias,
+								'parent_key'=>'id',
 								'foreign_key'=>$this->name.static::foreign_key_suffix()
 							],
 							$details
@@ -388,9 +389,9 @@
 			if(!isset($this->_related[$name])){
 				$aliases = self::$aliases[$this->name];
 				if(isset($aliases['belongs_to'][$name])){
-					$alias = $aliases['has_many'][$name];
+					$alias = $aliases['belongs_to'][$name];
 					$class = "\\Model\\{$alias['model']}";
-					$this->_related[$name] = $class::fetch([$alias['foreign_key'] => $this->id])[0];
+					$this->_related[$name] = $class::fetch([$alias['parent_key'] => $this->get($alias['foreign_key'])])[0];
 				}elseif(isset($aliases['has_one'][$name])){
 					$alias = $aliases['has_many'][$name];
 					$class = "\\Model\\{$alias['model']}";