Example #1
0
 /**
  * @param               $id
  * @param               $relationTableName
  * @param  array        $where
  * @param  array        $options
  * @return array|Bean[]
  */
 public function getMany($id, $relationTableName, array $where = [], array $options = [])
 {
     if ($this->table->hasOneToManyTable($relationTableName)) {
         $where[Relation::getForeignKey($this->getTableName())] = $id;
         if ($options) {
             $where = array_merge(['AND' => $where], $options);
         }
         return $this->getManagerFactory()->getManager($relationTableName)->select([], $where);
     } elseif ($this->table->hasManyToManyTable($relationTableName)) {
         $mm = Relation::getManyToManyTableName($this->getTableName(), $relationTableName);
         $manager = $this->getManagerFactory()->getManager($relationTableName);
         $foreignKey = $mm . '.' . Relation::getForeignKey($relationTableName);
         $thisForeignKey = $mm . '.' . Relation::getForeignKey($this->getTableName());
         $where[$thisForeignKey] = $id;
         return $manager->select(['[<]' . $mm => [$relationTableName . '.id' => $foreignKey]], ['AND' => $where]);
     } else {
         return [];
     }
 }