PHPackages                             fedornabilkin/yii2-binds - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. fedornabilkin/yii2-binds

ActiveYii2-extension[Database &amp; ORM](/categories/database)

fedornabilkin/yii2-binds
========================

Связывает модели и сущности посредством срединной таблицы на основе глобального идентификатора uid

v0.0.1(8y ago)020MITPHP

Since Mar 12Pushed 8y ago1 watchersCompare

[ Source](https://github.com/fedornabilkin/yii2-binds)[ Packagist](https://packagist.org/packages/fedornabilkin/yii2-binds)[ RSS](/packages/fedornabilkin-yii2-binds/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

Связывание сущностей
====================

[](#связывание-сущностей)

Связывает модели и сущности посредством промежуточной таблицы на основании глобальнго uid.

Расширение требует php 7.0 и выше. Использует модуль [yii2-tree-manager](https://github.com/kartik-v/yii2-tree-manager)и [SAR (simple ajax requests)](https://github.com/fedornabilkin/sar)

Установка
---------

[](#установка)

Установите расширение с помощью [composer](http://getcomposer.org/download/).

```
php composer.phar require --prefer-dist fedornabilkin/yii2-binds "*"

```

или добавьте в секцию require в файл `composer.json`.

```
"fedornabilkin/yii2-binds": "dev-master"

```

Выполните миграции
------------------

[](#выполните-миграции)

` php yii migrate --migrationPath=@fedornabilkin/binds/migrations`

Управление каталогом `/binds/catalog`

Пример использования
--------------------

[](#пример-использования)

Модель

```
use fedornabilkin\binds\behaviors\BindBehavior;
use fedornabilkin\binds\behaviors\SeoBehavior;
use fedornabilkin\binds\models\base\BindModel;

class Post extends BindModel
{

    public function behaviors()
    {
        return array_merge_recursive(parent::behaviors(), [
            'SeoBehavior' => [
                'class' => SeoBehavior::class,
            ],
            'BindsBehavior' => [
                'class' => BindBehavior::class,
                'tree' => [
                    // никнэймы корневых узлов дерева каталога
                    'nicknames' => [
                        'visible' => [
                            'multiple' => false, // единичный или множественный выбор
                        ],
                        'categories' => [
                            'multiple' => false,
                        ],
                        'tags' => [
                            'multiple' => true,
                            'asDropdown' => false, // развернутое состояние
                        ],
                    ],
                ],
            ],
        ]);
    }

    /**
     * tableName()
     * rules()
     * attributeLabels()
     * ...
     */

    /**
     * модели hasOne, указать для удаления дочерней модели
     * если она связана с родительской один-к-одному
     *
     * Один комментарий может быть привязан только к одной модели Post
     */
    public function getChildModels()
    {
        return array_merge(parent::getChildModels(), [
            Comment::tableName() => Comment::class,
        ]);
    }

    /**
     * @return ActiveQuery
     */
    public function getComments()
    {
        return $this->hasOne(Comment::class, ['uid_content' => 'uid']);
    }
}
```

Форма заполнения данными

```

```

```

             $model])?>

            field($model, 'title')->textInput(['maxlength' => true]) ?>

            field($model, 'post')->textarea(['rows' => 6]) ?>

                 'btn btn-success']) ?>

             $model])?>

             $model])?>

```

Если к комментарию привязана модель рейтинга, то в `Comment::getChildModels()`необходимо указать эту модель, чтобы при удалении модели Post удалить все комментарии, которые к ней относятся, а также все рейтинги для каждого удаленного комментария.

Такая схема удаления моделей будет работать только в том случае, если эти модели имеют поле `uid` с внешним ключом на поле `id` таблицы `bind_uids` и привязаны к родительской модели через поле `uid_content`.

Рекурсивный поиск `uid` при удалении осуществляется в методе `BindModel::_getUids()`

Конфигурация
------------

[](#конфигурация)

Чтобы SEO-данные отобразились на странице в metatags, необходимо добавить `SeoBehavior` в компонент `View` в конфиграционном файле. Также в адресе необходимо передать $\_GET `?alias=adres-stranicy`.

```
'components' => [
    ...

    'view' => [
        'as seo' => [
            'class' => \fedornabilkin\binds\behaviors\SeoBehavior::class,
        ],
    ],
],

'modules' => [

    ...

    'binds' => [
        'class' => 'fedornabilkin\binds\Module',
    ],
    'treemanager' => [
        'class' => 'kartik\tree\Module',
        'dataStructure' => [
            'keyAttribute' => 'id',
        ],
    ],
],
```

[Инструкция и обсуждение](http://www.masterwebs.ru/topic/29375-lp-rasshirenie-yii2-binds/)

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2983d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10771156?v=4)[fedornabilkin](/maintainers/fedornabilkin)[@fedornabilkin](https://github.com/fedornabilkin)

---

Top Contributors

[![fedornabilkin](https://avatars.githubusercontent.com/u/10771156?v=4)](https://github.com/fedornabilkin "fedornabilkin (15 commits)")

---

Tags

dbyii2extensioncatalogseobinds

### Embed Badge

![Health badge](/badges/fedornabilkin-yii2-binds/health.svg)

```
[![Health](https://phpackages.com/badges/fedornabilkin-yii2-binds/health.svg)](https://phpackages.com/packages/fedornabilkin-yii2-binds)
```

###  Alternatives

[dmstr/yii2-db

Database extensions

19618.8k6](/packages/dmstr-yii2-db)[sjaakp/yii2-spatial

Yii2 ActiveRecord supporting MySQL spatial data

1873.8k1](/packages/sjaakp-yii2-spatial)[mg-code/yii2-helpers

A collection of useful helper classes for Yii framework 2.0

2022.5k5](/packages/mg-code-yii2-helpers)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
