/** * 目的地游记列表 * @param $destinationSlug string * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function travelList($destinationSlug) { $data = Cache::remember("travel.destination.list.{$destinationSlug}", self::CACHE_TIME, function () use($destinationSlug) { $destinationInfo = $this->destination->where('slug', $destinationSlug)->first(['id', 'destination', 'seo_title', 'description', 'slug']); if (!$destinationInfo['id']) { abort(404); } $travelList = $destinationInfo->travel()->orderBy('begin_date', 'desc')->get(); //定义了一对多关系,就是这么方便 return ['travelList' => $travelList, 'destinationInfo' => $destinationInfo]; }); $travelList = $data['travelList']; $destinationInfo = $data['destinationInfo']; $seoSuffix = "_tanteng.me"; return view('travel.destination', compact('travelList', 'destinationInfo', 'seoSuffix')); }
/** * Handle the event. * * @param TravelsWasUpdated $event * @return void */ public function handle(TravelsWasUpdated $event) { $travels = $event->travels; $destinationId = $travels['destination_id']; $endDate = $travels['end_date']; //游记结束时间 $lastDate = Destination::where('id', $destinationId)->value('latest'); if (strtotime($endDate) - strtotime($lastDate) >= 0) { Destination::where('id', $destinationId)->update(['latest' => date('Y-m-d H:i:s', strtotime($endDate))]); } }
/** * @param Request $request * @return Article */ public function doPost(Request $request) { // TODO: Implement doPost() method. /** @var \App\Models\ContentBase $newContent */ $newContent = ContentBase::create(['content_type' => 0]); $newArticle = $newContent->article()->create($request->only($this->articleFields)); if ($request->input('cover_id') != 0) { $newArticle['cover_id'] = $request->input('cover_id'); $newArticle->save(); } // get all checked-in destinations /** @var array $dest */ $dest = array_map(function ($item) { $rs = Destination::where('des_name', $item->des_name)->first(); return $rs; }, (array) json_decode($request->input('destinations'))); foreach ($dest as $d) { /** @var Destination $d */ $m = new ArticleDestination(); $m->article_id = $newArticle->article_id; $m->des_id = $d->des_id; $m->save(); } // get all tagged tags $tags = array_map(function ($item) { return Tag::where('tag_name', $item->tag_name)->first(); }, (array) json_decode($request->input('tagnames'))); /** @var Tag $t */ foreach ($tags as $t) { $m = new ArticleTag(); $m->article_id = $newArticle->article_id; $m->tag_id = $t->tag_id; $m->save(); } return $newArticle; }