1 | <?php |
||
9 | class Post extends Model |
||
10 | { |
||
11 | use Sluggable, Searchable { |
||
12 | searchable as scoutSearchable; |
||
13 | } |
||
14 | |||
15 | public $dates = ['published_at']; |
||
16 | |||
17 | public function category() |
||
21 | |||
22 | public function tags() |
||
26 | |||
27 | public function getBodyMarkdownAttribute() |
||
31 | |||
32 | public function getBodyRawAttribute() |
||
36 | |||
37 | public function getUrlAttribute() |
||
41 | |||
42 | public function isVisible() |
||
46 | |||
47 | public function scopePublished($query) |
||
51 | |||
52 | public function scopeVisible($query) |
||
56 | |||
57 | public function scopeFeatured($query) |
||
61 | |||
62 | public function scopeRecentsFirst($query) |
||
66 | |||
67 | public function scopeWhereHasTag($query, ...$tags) |
||
73 | |||
74 | public function scopeSearchLike($query, $search) |
||
88 | |||
89 | public function syncTags($rawTags) |
||
90 | { |
||
91 | $tags = collect(array_filter($rawTags))->map(function ($rawTag) { |
||
92 | $tag = Tag::findOrCreateByName(trim($rawTag)); |
||
93 | |||
94 | return $tag; |
||
95 | }); |
||
96 | |||
97 | $this->tags()->sync($tags->pluck('id')->toArray()); |
||
98 | } |
||
99 | |||
100 | public function searchable() |
||
106 | |||
107 | public function toSearchableArray() |
||
117 | } |
||
118 |