public function createEntry($data) { $textData = isset($data['text']) ? $data['text'] : array(); $synonymies = isset($data['synonymies']) ? $data['synonymies'] : array(); $synonymies = !$synonymies && isset($data['keywords']) ? $data['keywords'] : $synonymies; $categoryData = isset($data['categories']) ? $data['categories'] : array(); $categoryNamesData = isset($data['categoryNames']) ? $data['categoryNames'] : array(); $entry = self::findFirst("title='{$data['title']}'"); $newEntry = false; if (!$entry) { $entry = $this; $newEntry = true; } if ($textData) { unset($data['text']); $text = new EntryTexts(); $text->assign($textData); $entry->text = $text; } $keywords = array(); if ($synonymies) { $synonymiesArray = is_array($synonymies) ? $synonymies : explode(',', $synonymies); $mainKeyword = new EntryKeywords(); $mainKeyword->keyword = $data['title']; $keywords[] = $mainKeyword; foreach ($synonymiesArray as $_keyword) { $keyword = new EntryKeywords(); $keyword->keyword = $_keyword; $keywords[] = $keyword; } } $entry->keywords = $keywords; $categories = array(); if ($categoryData) { unset($data['categories']); foreach ($categoryData as $categoryId) { $category = Category::findFirst($categoryId); if ($category) { $categories[] = $category; } } } // 通过分类名指定分类 if ($categoryNamesData) { unset($data['categoryNames']); foreach ($categoryNamesData as $_categoryName) { $categories[] = Category::getOrCreate($_categoryName); } } $entry->categories = $categories; if ($newEntry) { $entry->assign($data); } $pinyin = new Pinyin(); $entry->initial = substr($pinyin->transformUcwords($entry->title), 0, 1); if (!$entry->save()) { throw new RuntimeException('Create post failed'); } return $entry; }