public function run() { DB::table('articles')->delete(); factory(Article::class, 250)->make()->each(function ($article) { $article->author()->associate(User::all()->random(1)); $article->category()->associate(Category::all()->random(1)); $article->save(); $tags = Tag::all()->random(rand(1, 10)); if ($tags instanceof Collection) { foreach ($tags as $tag) { $article->tags()->attach($tag->id); } } else { $article->tags()->attach($tags->id); } }); }
/** * @param ArticleRequest $request * @param Article|null $article * @return Article $article */ private function buildArticle(ArticleRequest $request, $article = null) { $articleData = $request->all(); $articleData['slug'] = str_slug($articleData['title']); if (is_null($article)) { $articleData['published_at'] = Carbon::now(); $articleData['state'] = 'online'; $article = Auth::user()->articles()->create($articleData); } else { $article->update($articleData); } if ($request->has('tags')) { foreach ($articleData['tags'] as $key => $tag) { $articleData['tags'][$key] = Tag::firstOrCreate(['name' => $tag, 'slug' => str_slug($tag)])->id; } $article->tags()->sync($articleData['tags']); } return $article; }
/** * Search a tag in the database * @param string $search String to search * @param $filters * @return mixed */ public function search($search, $filters = null) { $quantity = isset($filters['quantity']) ? $filters['quantity'] : 10; return Tag::where('name', 'like', '%' . $search . '%')->take($quantity)->get(); }