diff --git a/backend/modules/card/controllers/UserCardController.php b/backend/modules/card/controllers/UserCardController.php index 139417b..6ea86c5 100755 --- a/backend/modules/card/controllers/UserCardController.php +++ b/backend/modules/card/controllers/UserCardController.php @@ -43,7 +43,6 @@ class UserCardController extends Controller */ public function actionIndex() { - $status = new Status(); $searchModel = new UserCardSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); @@ -107,7 +106,6 @@ class UserCardController extends Controller public function actionUpdate($id) { $model = $this->findModel($id); -// Debug::dd($model); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } diff --git a/backend/modules/card/models/UserCard.php b/backend/modules/card/models/UserCard.php index ae2e498..9f6719e 100755 --- a/backend/modules/card/models/UserCard.php +++ b/backend/modules/card/models/UserCard.php @@ -74,9 +74,6 @@ class UserCard extends \common\models\UserCard } } - - - if($post['skill']){ CardSkill::deleteAll(['card_id' => $this->id]); diff --git a/backend/modules/card/models/UserCardSearch.php b/backend/modules/card/models/UserCardSearch.php index 29a2ebe..98f7a7c 100755 --- a/backend/modules/card/models/UserCardSearch.php +++ b/backend/modules/card/models/UserCardSearch.php @@ -2,6 +2,7 @@ namespace backend\modules\card\models; +use common\classes\Debug; use Yii; use yii\base\Model; use yii\data\ActiveDataProvider; @@ -12,6 +13,7 @@ use backend\modules\card\models\UserCard; */ class UserCardSearch extends UserCard { + public $skills; /** * {@inheritdoc} */ @@ -20,6 +22,7 @@ class UserCardSearch extends UserCard return [ [['id', 'gender', 'status'], 'integer'], [['fio', 'passport', 'photo', 'email', 'dob', 'created_at', 'updated_at'], 'safe'], + ['skills', 'each', 'rule' => ['integer']], ]; } @@ -42,9 +45,12 @@ class UserCardSearch extends UserCard public function search($params) { $query = UserCard::find(); - // add conditions that should always apply here + //try join 3 tables + $query->leftJoin('card_skill', 'card_skill.card_id=user_card.id'); + $query->leftJoin('skill', 'skill.id=card_skill.skill_id'); + $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); @@ -74,6 +80,8 @@ class UserCardSearch extends UserCard ->andFilterWhere(['like', 'photo', $this->photo]) ->andFilterWhere(['like', 'email', $this->email]); + $query->andFilterWhere(['skill.id' => $this->skills]); + return $dataProvider; } } diff --git a/backend/modules/card/views/user-card/_additional.php b/backend/modules/card/views/user-card/_additional.php new file mode 100644 index 0000000..4b53d2d --- /dev/null +++ b/backend/modules/card/views/user-card/_additional.php @@ -0,0 +1 @@ +skill->name; ?> diff --git a/backend/modules/card/views/user-card/index.php b/backend/modules/card/views/user-card/index.php index 2778005..bca1464 100755 --- a/backend/modules/card/views/user-card/index.php +++ b/backend/modules/card/views/user-card/index.php @@ -3,6 +3,7 @@ use yii\helpers\Html; use yii\grid\GridView; use yii\helpers\Url; +use yii\widgets\ListView; /* @var $this yii\web\View */ /* @var $searchModel backend\modules\card\models\UserCardSearch */ @@ -56,6 +57,29 @@ $this->params['breadcrumbs'][] = $this->title; ], //'created_at', //'updated_at', + [ + 'label' => 'Навыки', + 'format' => 'raw', + 'value' => function($model){ + $dataProvider = new \yii\data\ActiveDataProvider([ + 'query' => $model->getSkillValues(), + ]); + return ListView::widget([ + 'dataProvider' => $dataProvider, + 'itemView' => '_additional', + 'layout' => "{items}", + ]); + }, + 'filter' => kartik\select2\Select2::widget([ + 'attribute' => 'skills', + 'model' => $searchModel, + 'data' => \common\models\UserCard::getNameSkills(), + 'options' => ['multiple' => true,'placeholder' => 'Выбрать параметр','class' => 'form-control'], + 'pluginOptions' => [ + 'allowClear' => true + ], + ]), + ], ['class' => 'yii\grid\ActionColumn'], ], diff --git a/common/models/UserCard.php b/common/models/UserCard.php index de772fe..47c946f 100755 --- a/common/models/UserCard.php +++ b/common/models/UserCard.php @@ -5,6 +5,7 @@ namespace common\models; use Yii; use yii\behaviors\TimestampBehavior; use yii\db\Expression; +use yii\helpers\ArrayHelper; /** * This is the model class for table "user_card". @@ -140,4 +141,14 @@ class UserCard extends \yii\db\ActiveRecord { return $this->genders[$this->gender]; } + + public function getSkillValues() + { + return $this->hasMany(CardSkill::class, ['card_id' => 'id'])->with('skill'); + } + + public static function getNameSkills() + { + return ArrayHelper::map(Skill::find()->all(),'id', 'name'); + } }