/** * Register any other events for your application. * * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ public function boot(DispatcherContract $events) { parent::boot($events); Project::observe(new SlugGeneratorObserver()); Category::observe(new SlugGeneratorObserver()); Tag::observe(new SlugGeneratorObserver()); }
public function createProject($request) { $file = $this->image->doUpload(); $input = $request->all(); $projectData = ['image_id' => $file->id, 'name' => $input['name'], 'description' => $input['description'], 'url' => $input['url'], 'user_email' => $input['user_email'], 'user_twitter' => str_replace('@', '', $input['user_twitter'])]; $project = Project::create($projectData); $project->tags()->sync($input['tags']); $project->categories()->sync($input['categories']); event(new ProjectWasCreated($project)); return $project; }
/** * Display the specified resource. * * @param int $id * @return Response */ public function show($slug) { $project = Project::where('slug', $slug)->firstOrFail(); // related tags $c = $project->categories; $related = Project::whereHas('categories', function ($query) use($c) { $categories = []; $c->each(function ($cate) use($query, &$categories) { $categories[] = $cate->id; }); $query->whereIn('projects_categories.id', $categories); })->where('is_published', 1)->where('id', '!=', $project->id)->take(3)->get(); return view('sites.show')->with('project', $project)->with('related', $related)->with('currentMenu', 'proyectos'); }