Как получить SQL запрос текстом в Yii2
Как получить SQL запрос текстом в Yii2

Казалось бы, простая и тривиальная задача. Но пришлось немного покопаться в коде и доках.
И так, что бы получить "чистый" SQL запрос который в последствии будет передан в БД на выполнение, достаточно использовать следующий код:

echo $Query -> select('*')
-> from('{{%authitem}}') -> createCommand() -> getRawSql();
Как подключиться к нескольким БД в Yii2
Как подключиться к нескольким БД в Yii2

Для того чтобы подключиться к нескольким БД в фреймворке Yii2 нужно:
1. Создать две настройки БД в конфигурационном файле сайта. У меня подключения вынесены в отдельные файлы, и имеют следующий вид (пример).
Подключение к первой базе данных:

return  [
	'class' => 'yiidbConnection',
	'dsn' => 'mysql:host=127.0.0.1;dbname=work_db1',
	'username' => 'root',
	'password' => '',
	'charset' => 'utf8',
	'tablePrefix' => 'tbl_',
];

Подключение к второй базе данных:

return  [
	'class' => 'yiidbConnection',
	'dsn' => 'mysql:host=127.0.0.1;dbname=work_db2',
	'username' => 'root',
	'password' => '',
	'charset' => 'utf8',
	'tablePrefix' => 'tbl_',
];

2. В базовом конфиге прописываем:

'db' => require(__DIR__ . '/db.php'),
'db2' => require(__DIR__ . '/db2.php'),

читать далее...

Как создать свой тип разрешения в Yii2 (для RBAC)
Как создать свой тип разрешения в Yii2 (для RBAC)

Для этого нам нужно:

/* ... */
use Yii;
use yiirbacItem;
/* ... */

$auth = Yii::$app -> authManager;

$Item = new Item();
$Item -> type = 3;
$Item -> name = 'ItemNewName'
$Item -> description = 'ItemNewDescription';
$auth -> add($Item);

читать далее...

Как в Yii2 обновить часть контента используя JavaScripit и Pjax
Как в Yii2 обновить часть контента используя JavaScripit и Pjax

Первое что нам нужно, это подключить сам "Pjax":

use yiiwidgetsPjax;

Далее, обернуть нужный контент в "Pjax" виджет. Например так:

<?php Pjax::begin([ 'id' => 'pjaxContent'
]); ?>

Здесь контент

<?php Pjax::end(); ?>

читать далее...

Yii2 использование трейтов в модели, и их переопределение
Yii2 использование трейтов в модели, и их переопределение

Говорят:

век живи, век учись, а дураком помрёшь

Это к чему? да это к трейтам в PHP. Они уже давно введены, а я вот только начал их использовать в новом проекте.
Первое что мне пришлось сделать, это вынести в trait метод атрибутов. Да, можно было сделать один родительский класс и наследоваться от него. Но решил все же остановиться на трейтах. Что мы имеем:

namespace commontraitsobject;

use Yii;

trait ObjectModelTrait
{
    /**
     * Labels
     * @return array
     */
    public function attributeLabels()
    {
        return [
			'id' => Yii::t('app', 'ID'),
			'name' => Yii::t('app', 'Name'),
			'desc' => Yii::t('app', 'Description'),
			'index_id' => Yii::t('app', 'Index'),
			'is_active' => Yii::t('app', 'Is active'),
        ];
    }
}

Данный trait не однократно использовался в моделях, вот один из примеров:

namespace commonmodelsterritory;

use yiidbActiveRecord;

use commontraitsobjectObjectModelTrait;

class TerritoryAreaModel extends ActiveRecord
{
	use ObjectModelTrait;
	
    public static function tableName()
    {
        return '{{%territory_area}}';
    }
}

читать далее...