Example #1
0
 /**
  * Add synonyms.
  * @param string|string[]|Synonym|Synonym[] $synonyms
  * `string`: Synonym string.
  * `string[]`: Synonym string array.
  * `Synonym`: Synonym model.
  * `Synonym[]`: Synonym models.
  * String if it is a synonym string, or Synonym instance.
  * @return boolean
  * @throws InvalidParamException
  */
 public function setSynonyms($synonyms)
 {
     if (is_string($synonyms)) {
         if (Synonym::find()->where(['word' => $synonyms, 'headword_guid' => $this->guid])->exists()) {
             throw new InvalidParamException('The synonyms: `' . $synonyms . '` has existed.');
         }
         $model = new Synonym(['word' => $synonyms, 'headword' => $this]);
         return $model->save();
     }
     if ($synonyms instanceof Synonym) {
         if (Synonym::find()->where(['word' => $synonyms->word, 'headword_guid' => $this->guid])->exists()) {
             throw new InvalidParamException('The synonyms: `' . $synonyms->word . '` has existed.');
         }
         $synonyms->headword = $this;
         return $synonyms->save();
     }
     if (is_array($synonyms)) {
         foreach ($synonyms as $syn) {
             if (!$this->setSynonyms($syn)) {
                 Yii::error('Synonyms failed to add.', __METHOD__);
             }
         }
     }
     return true;
 }