WHERE rc.constraint_schema = database() AND kcu.table_schema = database() AND rc.table_name = :tableName AND kcu.table_name = :tableName1 SQL; try { $rows = $this->db->createCommand($sql, [':tableName' => $table->name, ':tableName1' => $table->name])->queryAll(); $constraints = []; foreach ($rows as $row) { $constraints[$row['constraint_name']]['referenced_table_name'] = $row['referenced_table_name']; $constraints[$row['constraint_name']]['columns'][$row['column_name']] = $row['referenced_column_name']; } $table->foreignKeys = []; foreach ($constraints as $name => $constraint) { $table->foreignKeys[$name] = array_merge( [$constraint['referenced_table_name']], $constraint['columns'] );
{ // Because: https://bugs.php.net/bug.php?id=74980 if (PHP_VERSION_ID >= 70100 && strpos($message, 'Narrowing occurred during type inference. Please file a bug report') !== false) { return null; } return parent::handleError($code, $message, $file, $line); } /** * @inheritdoc */ public function getExceptionName($exception)
try { $rows = $this->db->createCommand($sql, [':tableName' => $table->name, ':tableName1' => $table->name])->queryAll(); $constraints = []; foreach ($rows as $row) { $constraints[$row['constraint_name']]['referenced_table_name'] = $row['referenced_table_name']; $constraints[$row['constraint_name']]['columns'][$row['column_name']] = $row['referenced_column_name']; } $table->foreignKeys = []; foreach ($constraints as $name => $constraint) { $table->foreignKeys[$name] = array_merge(
* * @param TableSchema $table the table metadata * @throws Exception */ protected function findConstraints($table) { parent::findConstraints($table); // Modified from parent to get extended FK information. $tableName = $this->quoteValue($table->name); $sql = <<<SQL SELECT
protected function loadTableSchema($name) { $table = new TableSchema; $this->resolveTableNames($table, $name); if ($this->findColumns($table)) { $this->findConstraints($table); return $table; } return null; }
} $rawName = $this->getRawTableName($name); if (!isset($this->_tableMetadata[$rawName])) { $this->loadTableMetadataFromCache($cache, $rawName); } if ($refresh || !array_key_exists($type, $this->_tableMetadata[$rawName])) { $this->_tableMetadata[$rawName][$type] = $this->{'loadTable' . ucfirst($type)}($rawName); $this->saveTableMetadataToCache($cache, $rawName); } return $this->_tableMetadata[$rawName][$type]; }
* @param string $name table name. The table name may contain schema name if any. Do not quote the table name. * @param bool $refresh whether to reload the table schema even if it is found in the cache. * @return TableSchema|null table metadata. `null` if the named table does not exist. */ public function getTableSchema($name, $refresh = false) { return $this->getTableMetadata($name, 'schema', $refresh); } /** * Returns the metadata for all tables in the database. * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema name. * @param bool $refresh whether to fetch the latest available table schemas. If this is `false`,
* @throws InvalidConfigException if the table for the AR class does not exist. */ public static function getTableSchema() { $tableSchema = static::getDb() ->getSchema() ->getTableSchema(static::tableName()); if ($tableSchema === null) { throw new InvalidConfigException('The table does not exist: ' . static::tableName()); } return $tableSchema;
/** * {@inheritdoc} */ public static function populateRecord($record, $row) { $columns = static::getTableSchema()->columns; foreach ($row as $name => $value) { if (isset($columns[$name])) { $row[$name] = $columns[$name]->phpTypecast($value); } } parent::populateRecord($record, $row);
$models = []; /* @var $class ActiveRecord */ $class = $this->modelClass; foreach ($rows as $row) { $model = $class::instantiate($row); $modelClass = get_class($model); $modelClass::populateRecord($model, $row); $models[] = $model; } return $models; } }
public function populate($rows) { if (empty($rows)) { return []; } $models = $this->createModels($rows); if (!empty($this->join) && $this->indexBy === null) { $models = $this->removeDuplicatedModels($models); } if (!empty($this->with)) { $this->findWith($this->with, $models); }
public function all($db = null) { if ($this->emulateExecution) { return []; } $rows = $this->createCommand($db)->queryAll(); return $this->populate($rows); } /** * Converts the raw query results into the format as specified by this query. * This method is internally used to convert the data fetched from database * into the format as required by this query.
* @param Connection $db the DB connection used to create the DB command. * If null, the DB connection returned by [[modelClass]] will be used. * @return array|ActiveRecord[] the query results. If the query results in nothing, an empty array will be returned. */ public function all($db = null) { return parent::all($db); } /** * {@inheritdoc} */ public function prepare($builder)
$this->_groups = []; /** @var CategoryGroupRecord[] $groupRecords */ $groupRecords = CategoryGroupRecord::find() ->orderBy(['name' => SORT_ASC]) ->with('structure') ->all(); foreach ($groupRecords as $groupRecord) { $this->_groups[] = $this->_createCategoryGroupFromRecord($groupRecord); } return $this->_groups;
* * @param int $groupId * @return CategoryGroup|null */ public function getGroupById(int $groupId) { return ArrayHelper::firstWhere($this->getAllGroups(), 'id', $groupId); } /** * Returns a group by its UID. * * @param string $uid
public function getGroup(): CategoryGroup { if ($this->groupId === null) { throw new InvalidConfigException('Category is missing its group ID'); } $group = Craft::$app->getCategories()->getGroupById($this->groupId); if (!$group) { throw new InvalidConfigException('Invalid category group ID: ' . $this->groupId); } return $group;
* @inheritdoc */ protected function route() { // Make sure the category group is set to have URLs for this site $siteId = Craft::$app->getSites()->getCurrentSite()->id; $categoryGroupSiteSettings = $this->getGroup()->getSiteSettings(); if (!isset($categoryGroupSiteSettings[$siteId]) || !$categoryGroupSiteSettings[$siteId]->hasUrls) { return null; } return [
$this->trigger(self::EVENT_SET_ROUTE, $event); if ($event->route !== null) { return $event->route; } return $this->route(); } /** * @inheritdoc */ public function getUrl()
if (Craft::$app->getIsInstalled() && Craft::$app->getRequest()->getIsSiteRequest()) { /** @var Element $element */ /** @noinspection PhpUnhandledExceptionInspection */ $element = Craft::$app->getElements()->getElementByUri($path, Craft::$app->getSites()->getCurrentSite()->id, true); if ($element) { $route = $element->getRoute(); if ($route) { if (is_string($route)) { $route = [$route, []]; }
return $route; } $path = $request->getPathInfo(); // Is this an element request? if (($route = $this->_getMatchedElementRoute($path)) !== false) { return $route; } // Do we have a URL route that matches? if (($route = $this->_getMatchedUrlRoute($request)) !== false) { return $route;
/** @var Request $request */ // Just in case... if ($request->getIsConsoleRequest()) { return false; } if (($route = $this->_getRequestRoute($request)) !== false) { // Merge in any additional route params if (!empty($this->_routeParams)) { if (isset($route[1])) { $route[1] = ArrayHelper::merge($route[1], $this->_routeParams); } else { $route[1] = $this->_routeParams;
/** * @inheritdoc * @internal Based on \yii\web\Request::resolve(), but we don't modify $_GET/$this->_queryParams in the process. */ public function resolve() { if (($result = Craft::$app->getUrlManager()->parseRequest($this)) === false) { throw new NotFoundHttpException(Craft::t('yii', 'Page not found.')); } list($route, $params) = $result; /** @noinspection AdditionOperationOnArraysInspection */
* @throws NotFoundHttpException if the requested route is invalid */ public function handleRequest($request) { if (empty($this->catchAll)) { try { list($route, $params) = $request->resolve(); } catch (UrlNormalizerRedirectException $e) { $url = $e->url; if (is_array($url)) { if (isset($url[0])) { // ensure the route is absolute $url[0] = '/' . ltrim($url[0], '/');
// If this is an action request, call the controller if (($response = $this->_processActionRequest($request)) !== null) { return $response; } // If we're still here, finally let Yii do it's thing. return parent::handleRequest($request); } /** * @inheritdoc * @param string $route * @param array $params
{ try { $this->state = self::STATE_BEFORE_REQUEST; $this->trigger(self::EVENT_BEFORE_REQUEST); $this->state = self::STATE_HANDLING_REQUEST; $response = $this->handleRequest($this->getRequest()); $this->state = self::STATE_AFTER_REQUEST; $this->trigger(self::EVENT_AFTER_REQUEST); $this->state = self::STATE_SENDING_RESPONSE; $response->send();
(new Dotenv\Dotenv(CRAFT_BASE_PATH))->load(); } // Load and run Craft define('CRAFT_ENVIRONMENT', getenv('ENVIRONMENT') ?: 'production'); $app = require CRAFT_VENDOR_PATH.'/craftcms/cms/bootstrap/web.php'; $app->run();
$_GET = [ 'p' => 'news/company/p4', ];