e96/yii2-relational-behavior

在yii2中轻松保存关系模型

安装量: 53,448

依赖项: 0

建议者: 0

安全性: 0

星标: 5

关注者: 5

分支: 4

开放性问题: 0

类型:yii2-extension

dev-master 2017-12-20 17:19 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:03:20 UTC


README

此行为允许您在代码中设置关系。它还可以保存使用via()viaTable()声明的多对多关系。

关系接受int|int[]|ActiveRecord|ActiveRecord[]

安装

php composer.phar require e96/yii2-relational-behavior:dev-master

设置

在模型中

class User extends ActiveRecord
{
    public function behaviors()
    {
        return [
            e96\behavior\RelationalBehavior::className(), // enable behavior
        ];
    }

    public function rules()
    {
        return [
            ['permissions', 'safe'], // allow set permissions with setAttributes()
        ];
    }

    // define many-to-many relation
    public function getPermissions()
    {
        return $this->hasMany(Permission::className(), ['id' => 'permissionId'])
            ->viaTable('user-map-permission', ['userId' => 'id']);
    }
}

在视图中

$form->field($model, 'permissions')->dropDownList($permissions, ['multiple' => true])

用法

$user->load(Yii::$app->request->post());
$user->save();

其他用法

$user = User::findOne(1);
$user->permissions = 1;
// or
$user->permissions = [1,2];
// or
$user->permissions = Permission::findOne(1);
// or
$user->permissions = Permission::find()->all();
// or
$user->load(Yii::$app->request->post());
// or
$user->setAttributes(['permissions' => [1,2]]);
// then
$user->save();

使用StackEdit编写。