Beispiel #1
0
 /**
  * @return JsExpression
  */
 public function getBaseModelClassAutoComplete()
 {
     $data = [];
     foreach (Helper::getModelDeepNamespaces() as $modelNs) {
         $data[] = $modelNs . '\\base\\*Base';
     }
     return new JsExpression('function (request, response) { response(' . Json::htmlEncode($data) . '); }');
 }
Beispiel #2
0
 /**
  * @inheritdoc
  */
 public function bootstrap($app)
 {
     parent::bootstrap($app);
     foreach (Helper::getDbConnections() as $db) {
         if (in_array($db->getDriverName(), ['mysql', 'mysqli'])) {
             $db->schemaMap = array_merge($db->schemaMap, ['mysql' => 'yii\\gii\\plus\\db\\mysql\\Schema', 'mysqli' => 'yii\\gii\\plus\\db\\mysql\\Schema']);
         }
     }
     if ($app instanceof WebApplication) {
         $this->setViewPath(Yii::getAlias('@yii/gii/views'));
     }
 }
Beispiel #3
0
            if ($relation['direct']) {
                $depends[] = $relationFixtureClass;
            } else {
                $backDepends[] = $relationFixtureClass;
            }
        }
    }
}
if (count($depends)) {
    echo '
    public $depends = ', Helper::implode($depends, 1), ';
';
}
if (count($backDepends)) {
    echo '
    public $backDepends = ', Helper::implode($backDepends, 1), ';
';
}
echo '
    /*[
';
/* @var $columns yii\gii\plus\db\ColumnSchema[] */
$columns = array_values($tableSchema->columns);
foreach ($columns as $i => $column) {
    $comma = $i < count($columns) - 1 ? ',' : '';
    echo '        \'', $column->name, '\' => \'\'', $comma, '
';
}
echo '    ]*/

    public $dataFile = \'', $dataFile, '\';
Beispiel #4
0
';
        }
    }
}
// use
if (array_key_exists($tableName, $relationUses) && in_array('yii\\db\\Expression', $relationUses[$tableName])) {
    $dbExpression = 'Expression';
} else {
    $dbExpression = '\\yii\\db\\Expression';
}
// list items
foreach ($tableSchema->foreignKeys as $foreignKey) {
    $foreignTableName = $foreignKey[0];
    unset($foreignKey[0]);
    /* @var $foreignModelClass string|\yii\boost\db\ActiveRecord */
    $foreignModelClass = Helper::getModelClassByTableName($foreignTableName);
    if ($foreignModelClass && class_exists($foreignModelClass)) {
        $primaryKey = $foreignModelClass::primaryKey();
        if (count($primaryKey) == 1) {
            $attribute = array_search($primaryKey[0], $foreignKey);
            if ($attribute) {
                $attributeArg = Inflector::variablize($attribute);
                $listItemConditions = [];
                if (count($foreignKey) > 1) {
                    foreach (array_diff($foreignKey, $primaryKey) as $key1 => $key2) {
                        $listItemConditions[] = '\'' . $key2 . '\' => $this->' . $key1;
                    }
                    if (count($listItemConditions) == 1) {
                        $listItemConditions = $listItemConditions[0];
                    } else {
                        $listItemConditions = '
Beispiel #5
0
use yii\gii\plus\helpers\Helper;
use yii\helpers\Inflector;
/* @var $this yii\web\View */
/* @var $generator yii\gii\plus\generators\custom\model\Generator */
/* @var $ns string */
/* @var $modelName string */
/* @var $modelClass string|yii\boost\db\ActiveRecord */
/* @var $baseModelName string */
/* @var $baseModelClass string|yii\boost\db\ActiveRecord */
/* @var $queryNs string */
/* @var $queryName string */
/* @var $queryClass string|yii\boost\db\ActiveQuery */
/* @var $baseQueryName string */
/* @var $baseQueryClass string|yii\boost\db\ActiveQuery */
/* @var $tableSchema yii\gii\plus\db\TableSchema */
$uses = [$baseQueryClass];
Helper::sortUses($uses);
echo '<?php

namespace ', $queryNs, ';

use ', implode(';' . "\n" . 'use ', $uses), ';

/**
 * ', Inflector::titleize($queryName), '
 * @see \\', $modelClass, '
 */
class ', $queryName, ' extends ', $baseQueryName, '
{
}
';
Beispiel #6
0
    /**
     * @inheritdoc
     */
    public function render($template, $params = [])
    {
        $output = parent::render($template, $params);
        switch ($template) {
            case 'model.php':
                // fix uses
                $tableName = $params['tableName'];
                if (array_key_exists($tableName, $this->relationUses) && $this->relationUses[$tableName]) {
                    $uses = array_unique($this->relationUses[$tableName]);
                    Helper::sortUses($uses);
                    $output = str_replace('use Yii;', 'use Yii;' . "\n" . 'use ' . implode(';' . "\n" . 'use ', $uses) . ';', $output);
                }
                // fix rules
                $output = preg_replace('~\'targetClass\' \\=\\> (\\w+)Base\\:\\:className\\(\\)~', '\'targetClass\' => $1::className()', $output);
                // fix relations
                $nsClassName = $this->ns . '\\' . $params['className'];
                if (class_exists($nsClassName) && is_subclass_of($nsClassName, 'yii\\boost\\db\\ActiveRecord')) {
                    $model = new $nsClassName();
                    $output = preg_replace_callback('~@return \\\\(yii\\\\db\\\\ActiveQuery)\\s+\\*/\\s+public function ([^\\(]+)\\(\\)~', function ($match) use($model) {
                        if (method_exists($model, $match[2])) {
                            return str_replace($match[1], get_class(call_user_func([$model, $match[2]])) . '|\\' . $match[1], $match[0]);
                        } else {
                            return $match[0];
                        }
                    }, $output);
                }
                $params['relationUses'] = $this->relationUses;
                if (array_key_exists($tableName, $this->allRelations)) {
                    $params['allRelations'] = $this->allRelations[$tableName];
                } else {
                    $params['allRelations'] = [];
                }
                if (array_key_exists($tableName, $this->singularRelations)) {
                    $params['singularRelations'] = $this->singularRelations[$tableName];
                } else {
                    $params['singularRelations'] = [];
                }
                if (array_key_exists($tableName, $this->pluralRelations)) {
                    $params['pluralRelations'] = $this->pluralRelations[$tableName];
                } else {
                    $params['pluralRelations'] = [];
                }
                $output = preg_replace('~\\}(\\s*)$~', parent::render('model-part.php', $params) . '}$1', $output);
                break;
            case 'query.php':
                $code = <<<CODE
    /*public function active()
    {
        return \$this->andWhere('[[status]]=1');
    }*/

CODE;
                $output = str_replace($code, '', $output);
                $output = preg_replace('~\\}(\\s*)$~', parent::render('query-part.php', $params) . '}$1', $output);
                break;
        }
        $output = preg_replace_callback('~(@return |return new )\\\\((?:\\w+\\\\)*\\w+\\\\query)\\\\base\\\\(\\w+Query)Base~', function ($match) {
            $nsClassName = $match[2] . '\\' . $match[3];
            if (class_exists($nsClassName)) {
                return $match[1] . '\\' . $nsClassName;
            } else {
                return $match[0];
            }
        }, $output);
        $output = preg_replace_callback('~(@see | @return |\\[\\[)\\\\((?:\\w+\\\\)*\\w+)\\\\base\\\\(\\w+)Base~', function ($match) {
            $nsClassName = $match[2] . '\\' . $match[3];
            if (class_exists($nsClassName)) {
                return $match[1] . '\\' . $nsClassName;
            } else {
                return $match[0];
            }
        }, $output);
        return $output;
    }