$data['catid'], 'thumb' => $data['thumb'] ?? '', 'hits' => $data['hits'] ?? 0, 'publish_time' => isset($data['publish_time']) ? $this->setPublishTimeAttr($data['publish_time']) : time(), ]; $translateData = [ 'lang' => $lang, 'title' => $data['title'] ?? '', 'keywords' => $data['keywords'] ?? '', 'description' => $data['description'] ?? '', 'content' => $data['content'] ?? '', ]; $row = self::where('catid', $data['catid'])->find(); if ($row) { $row->save($mainData); } else { $row = self::create($mainData); } $pageData = PageData::where(['page_id' => $row->id, 'lang' => $lang])->find(); if ($pageData) { $pageData->save($translateData); } else { $translateData['page_id'] = $row->id; PageData::create($translateData); } return true; } public function getPageWithLang($catid, $lang = null) { $lang = $lang ?: LangModel::getDefaultMark(); $defaultLang = LangModel::getDefaultMark(); $row = self::where('catid', $catid)->find(); if (!$row) { return null; } $translate = PageData::where(['page_id' => $row->id, 'lang' => $lang])->find(); if (!$translate && $lang !== $defaultLang) { $translate = PageData::where(['page_id' => $row->id, 'lang' => $defaultLang])->find(); } $data = $row->toArray(); $data['lang'] = $lang; $data['title'] = $translate['title'] ?? ''; $data['keywords'] = $translate['keywords'] ?? ''; $data['description'] = $translate['description'] ?? ''; $data['content'] = $translate['content'] ?? ''; $data['has_translation'] = $translate ? 1 : 0; return $data; } public static function onBeforeDelete($row) { PageData::where('page_id', $row->id)->delete(); } public function category() { return $this->belongsTo('Category', 'catid', 'id'); } }