Як отримати 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'
]); ?>

Content here

<?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}}';
    }
}

читати далі...