Framework  3.9
JoinResultIterator Class Reference

Inherits Iterator, and Countable.

Public Member Functions

 __construct ($join, $constraints)
 
 count ()
 
 rewind ()
 
 current ()
 
 valid ()
 
 next ()
 
 key ()
 

Public Attributes

 $join
 
 $constraints
 
 $query
 
 $result
 
 $current = null
 
 $position = -1
 
 $item
 

Detailed Description

Definition at line 121 of file join.inc.

Constructor & Destructor Documentation

◆ __construct()

JoinResultIterator::__construct (   $join,
  $constraints 
)

Definition at line 131 of file join.inc.

132  {
133  $this->join = $join;
134  $this->constraints = $constraints;
135  $this->item = new JoinResult();
136  for($i = 0; $i < count($join->classes); ++$i)
137  {
138  $class = $join->classes[$i];
139  $this->item->$class = new $class;
140  }
141 
142  $this->query = $join->generateQuery($constraints);
143  }
JoinResult is an empty placeholder class.
Definition: join.inc:46
query($class)
Performs a query against the database, returning an array of DataItem objects of the specified class.
Definition: query.inc:373

Member Function Documentation

◆ count()

JoinResultIterator::count ( )

Definition at line 145 of file join.inc.

146  {
147  $this->rewind();
148  trace("Number of Rows: {$this->rowCount}", 4);
149 
150  return $this->rowCount;
151  }
trace($msg, $lvl=3, $callStack=null)
Send output to the trace log.
Definition: functions.inc:1010

◆ current()

JoinResultIterator::current ( )

Definition at line 179 of file join.inc.

180  {
181  for($i = 0; $i < count($this->join->classes); ++$i)
182  {
183  $class = $this->join->classes[$i];
184  $this->item->$class->populate($this->current, $this->join->aliases[$this->item->$class->table]);
185  }
186 
187  foreach($this->join->pseudos as $class => $lookup)
188  {
189  foreach($this->join->aliases as $table => $prefix)
190  {
191  $keyAlias = "{$prefix}.{$lookup['index']}";
192 
193  $key = $this->current[$keyAlias];
194 
195  if (array_key_exists($key, $lookup['items']))
196  {
197  $this->item->$class = $lookup['items'][$key];
198  break;
199  }
200  }
201  }
202 
203  return $this->item;
204  }

◆ key()

JoinResultIterator::key ( )

Definition at line 217 of file join.inc.

218  {
219  return $this->position;
220  }

◆ next()

JoinResultIterator::next ( )

Definition at line 211 of file join.inc.

212  {
213  $this->current = $this->result->fetch();
214  ++$this->position;
215  }

◆ rewind()

JoinResultIterator::rewind ( )

Definition at line 153 of file join.inc.

154  {
155  if ($this->position == 0) return;
156 
157  $this->current = null;
158  $this->position = 0;
159 
160  if (!$this->query)
161  {
162  $this->query = $this->join->generateQuery($this->constraints);
163  }
164 
165  try
166  {
168  $this->result = $db->prepare($this->query);
169  $this->result->execute();
170  $this->rowCount = $this->result->rowCount();
171  $this->current = $this->result->fetch();
172  }
173  catch(PDOException $e)
174  {
175  throw new FakoliException($e->getMessage());
176  }
177  }
static getConnection()
Retrieves a reference to the global database connection.

◆ valid()

JoinResultIterator::valid ( )

Definition at line 206 of file join.inc.

207  {
208  return ($this->current != null);
209  }

Member Data Documentation

◆ $constraints

JoinResultIterator::$constraints

Definition at line 124 of file join.inc.

◆ $current

JoinResultIterator::$current = null

Definition at line 127 of file join.inc.

◆ $item

JoinResultIterator::$item

Definition at line 129 of file join.inc.

◆ $join

JoinResultIterator::$join

Definition at line 123 of file join.inc.

◆ $position

JoinResultIterator::$position = -1

Definition at line 128 of file join.inc.

◆ $query

JoinResultIterator::$query

Definition at line 125 of file join.inc.

◆ $result

JoinResultIterator::$result

Definition at line 126 of file join.inc.


The documentation for this class was generated from the following file: