e96 / yii2-relational-behavior
Easy saving relational models in yii2
Installs: 54 632
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 5
Forks: 4
Open Issues: 0
Type:yii2-extension
Requires
- php: >=5.4.0
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-11-09 16:48:09 UTC
README
This behavior allows you to set relations in your code. Also, it saves many-to-many relations declared with via()
or viaTable()
Relations accepts int|int[]|ActiveRecord|ActiveRecord[]
.
Install
php composer.phar require e96/yii2-relational-behavior:dev-master
Setup
In model:
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']); } }
In view:
$form->field($model, 'permissions')->dropDownList($permissions, ['multiple' => true])
Usage
$user->load(Yii::$app->request->post()); $user->save();
Other usages:
$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();
Written with StackEdit.