Представьте у нас есть:
- таблица с продуктами
- таблица со свойствами продуктов
- и таблица связей продуктов и свойств
На языке Yii2 подобное будет иметь вид:
<?php
class Product extends \yii\db\ActiveRecordInterface
{
public function behaviors()
{
return [
\skeeks\cms\behaviors\RelationalBehavior::className(), // enable behavior
];
}
public function rules()
{
return [
['properies', 'safe'], // allow set permissions with setAttributes()
];
}
// define many-to-many relation
public function getProperies()
{
return $this->hasMany(Property::className(), ['id' => 'property_id'])
->viaTable('product2properties', ['product_id' => 'id']);
}
}
За одним исключением, мы объявили поведение
\skeeks\cms\behaviors\RelationalBehavior
Оно то и будет упращять нашу жизнь в дальнейшем.
Теперь для построения формы редаткирования этого продукта можно всего лишь написать:
<?= $form->field($model, 'properties')->checkboxList(\yii\helpers\ArrayHelper::map(
Property::find()->all(), 'id', 'name'
)); ?>
Еще примеры для наглядности, какие возможности дает это поведение:
$product = Product::findOne(1);
$product->properties = 1;
// or
$product->properties = [1,2];
// or
$product->properties = Property::findOne(1);
// or
$product->properties = Property::find()->all();
// or
$product->load(Yii::$app->request->post());
// or
$product->setAttributes(['properties' => [1,2]]);
// then
$product->save();
-
Семенов Александр
- /
- 16 окт. 2015 г.
- /
- 0
- /
- 3684
Популярное
Релиз SkeekS CMS 5.6.5. Что нового в CMS в 2020 году?
- 29 апр. 2020 г.
Релиз SkeekS CMS 5.5.11 работает с yii2 2.0.24
- 13 авг. 2019 г.
Новые настройки модуля магазин skeeks/cms-shop 2.2.7.13
- 13 авг. 2019 г.
Как отправить форму в yii2 и skeeks cms через ajax?
- 18 апр. 2019 г.
Все комментарии (0)