Yii2

yii2 SQL Получить код запроса из метода find() модели ActiveRecord

Для получения SQL кода можно использовать такой подход:

/* Предположим, что бы такой запрос к модели,
 созданный конструктором: */
$organizationQuery = Organization::find()
	->addSelect('{{%organization}}.id')
	->filter($params)
	->addColumns($show)
	->permitted('read', $user);

// получаем текст запроса:
$sqlText = $organizationQuery->createCommand()->getRawSql(); 

Также можно отправить запрос в систему журналирования yii2 (где его и посмотреть):

yii2 Как назначить стили для label при генерировании формы

Вот такое решение почему-то не работает:

<?= $form->field($model, 'name', [
                    'template' => "{label}\n<div class='col-md-6'>{input}</div>\n{hint}\n{error}",
                    'labelOptions' => [ 'class' => 'your_custom_class_name' ]
    ])->textInput(['maxlength' => true])?>

(хотя у вас как раз, наверное, сработает)

yii2 Already at ''. Nothing needs to be done. -- Что делаеть если откат миграции не помогает

Ситуация

Если вы забыли убрать в ветке down вашей миграции:

 return false; 

и запустили её -- то все что нужно откатиться, но будет брошено сообщение об ошибке в конце выполнения отката, это приведёт к тому, что заново накатить миграцию просто так вы уже не сможете, получая сообщение:

yii2 Валидация регулярным выражением, rules(), Проверка уникальности, имя атрибута и значение в сообщения. Сложная проверка

Например проверим, что ИНН состоит из 12 цифр (принимаем как строку)

public function rules()
{
	$systemRules = [
		[['INN'],  'match', 'pattern' => '/^[0-9]{12}$/'], // проверка ИНН
		[['OGRN'], 'unique', 'targetAttribute' => ['OGRN'], 
			'message' => '{attribute} "{value}" уже занят. Задайте уникальный {attribute}'],
	];

	return   $systemRules;
}

Вообще правила могут быть комбинированными и очень сложными (уникально, обязательность заполнения, уникальность суммы нескольких полей и т.д.):

yii2 Failed to open redis DB connection (redis.sock, database=0): 2 - No such file or directory. Настройка локального конфига

Database Exception – yii\db\Exception
Failed to open redis DB connection (/var/run/redis/redis.sock, database=0): 2 - No such file or directory

Error Info: No such file or directory

Проблема возникает при использовании редиса.

Решение

Можно:

$config для конструктора объекта, создаваемого в yii2tech/embedded

В конструкторе класса вложенного документа необходимо указать среди аргументов $config и передать его в конструктор родительского класса. Иначе объект создаваться не будет, по крайней мере, методами из yii2tech/embedded. Объекты создаются по данным, переданным в этом массиве.

yii2 Trying to get property of non-object - При загрузке модели (передаче её в конструктор)

Убедитесь что объект не объект не создаётся два раза (используйте для этого Yii::trace())

Дело в том, что объект в конструктор которого вы передаёте метод может создаваться не только вами явно но и каким-то mapping-ом.

В нашем случае был такое решение:

Call to undefined function app\controllers\clinical\trace()

Call to undefined function app\controllers\ \trace()

просто убедитесь, что правильно вызываете функцию Yii::trace().

Pages

Subscribe to RSS - Yii2