Yii2 validate () перед ссылкой () с необходимым FK - PullRequest
0 голосов
/ 06 сентября 2018

Вот вопрос: например, у нас есть 2 модели: Книги и Метки

Теги Правила

public function rules()
{
    return [
        [['book_id', 'tag_name'], 'required']
    ];
}

Книги Правила

public function rules()
{
    return [
        [['name'], 'required']
    ];
}

Отношение «один-много-много» между Книгами и Теги

/**
 * @return \yii\db\ActiveQuery
 */
public function getTags()
{
    return $this->hasMany(Tags::className(), ['book_id' => 'id']);
}

Сохранение данных

if($books->load($post) && $books->save()){
    if(Model::loadMultiple($tags, $post) && Model::validateMultiple($tags)){
        foreach ($tags as $tag)
            $tags->link('books',$books);
    }
}

В результате я получил ошибку модели - Attribute "book_id" is required. Это происходит в Model::validateMultiple($tags), потому что FK book_id требуется в Метки модель.

Какое наилучшее решение на этом пути? У меня есть 2 варианта:

  1. Удалить "book_id" из необходимого правила
  2. Использование сценариев

Заранее спасибо за ваше мнение!

...