Yii2 Rest + Angular. Работа со связанными таблицами

Всё что касается построения API
Ответить
grpetr189853
Сообщения: 11
Зарегистрирован: 2019.03.27, 13:27
Откуда: Украина, г.Полтава
Контактная информация:

Yii2 Rest + Angular. Работа со связанными таблицами

Сообщение grpetr189853 »

Я пишу приложение Yii2 + Angular. У меня возник вопрос - как мне организовать работу со связанными таблицами - что бы я мог делать GET POST PUT DELETE запросы на свой api (изменяя данные в связанных отношением один ко многим таблицам )- к примеру имея такой ответ от сервера :

Код: Выделить всё

{
"id": "f61e8b51-d16c-464d-9929-44d1b05dba10",
"lastname": "Надь1dkjfkdjfdf12",
"name": "Виктор Иванович1",
"fathername": "Сергеевич1",
"location": 11,
"current_status": 3,
"company": "BADOO",
"position": "Middle JS Dev Inc",
"salary": 700,
"date_birth": "2020-01-30",
"date_created": "2020-02-06 11:23:59",
"photo": null,
"wish": null,
"documents": null,
"notes": "<ol><li>hgkhgkhg<i><strong>khgkhggkhggkg</strong></i></li><li><strong>dkfjkdjfkjdkfjdkjfkdjfkdj</strong></li><li>djfkdjfkdjfkjdkfjkdjfjeijeiefjief</li><li>dkjfkjdkjfdkfkdfjfkjd</li></ol>",
"relatedSkills":[
{
"id": 227,
"skill_id": 2,
"candidate_id": "f61e8b51-d16c-464d-9929-44d1b05dba10"
}
],
"city":{
"id": 11,
"country_id": 1,
"name": "Полтава"
}
}
я бы хотел иметь возможность изменять добавлять и удалять связанные навыки кандидата(relatedSkills) и его город(City). Сейчас мой контроллер имеет вид:

Код: Выделить всё

class ApicandidateController extends ActiveController
{

    public $modelClass = 'app\crm\entities\candidate\Candidate';

    public $updateScenario = Candidate::SCENARIO_UPDATE;

    public function behaviors()
    {
        return \yii\helpers\ArrayHelper::merge(parent::behaviors(), [
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
            ],
        ]);
    }

    public function actions(){
        $actions = parent::actions();
        unset($actions['index']);
        $actions['update']['scenario'] = Candidate::SCENARIO_UPDATE;
        return $actions;
    }

    public function actionIndex(){
        $activeData = new ActiveDataProvider([
            'query' => Candidate::find()->with('relatedSkills','city'),
            'pagination' => [
                'defaultPageSize' => -1,
                'pageSizeLimit' => -1,
            ],
        ]);
        return $activeData;
    }


}
Ответить