Add (posts)

This commit is contained in:
2023-07-27 02:18:38 +08:00
parent 1c917b865d
commit e70195f4f7
15 changed files with 525 additions and 34 deletions

View File

@@ -5,6 +5,7 @@
use App\Http\Controllers\Controller;
use App\Models\Category;
use App\Models\CountryLocale;
use App\Models\Post;
use Illuminate\Http\Request;
use Stevebauman\Location\Facades\Location;
@@ -27,7 +28,35 @@ public function country(Request $request, $country)
$request->session()->put('view_country_locale', $country_locale);
return view('front.country', ['country_locale' => $country_locale]);
$featured_posts = Post::select('posts.*')
->join('post_categories','posts.id','=', 'post_categories.post_id')
->join('categories','post_categories.category_id','=', 'categories.id')
->whereNotNull('post_categories.id')
->whereNotNull('categories.id')
->where('categories.country_locale_slug', $country_locale->slug)
->where('posts.featured', true)
->where('posts.status', 'publish')
->orderBy('posts.updated_at', 'desc')
->take(3)
->get();
$latest_posts = Post::select('posts.*')
->join('post_categories','posts.id','=', 'post_categories.post_id')
->join('categories','post_categories.category_id','=', 'categories.id')
->whereNotNull('post_categories.id')
->whereNotNull('categories.id')
->where('categories.country_locale_slug', $country_locale->slug)
->where('posts.featured', true)
->whereNotIn('posts.id', $featured_posts->pluck('id')->toArray())
->where('posts.status', 'publish')
->orderBy('posts.updated_at', 'desc')
->distinct()
->take(20)
->get();
return view('front.country', compact('country_locale','featured_posts','latest_posts')
);
}
return redirect()->route('home.country', ['country' => config('platform.general.fallback_country_slug')]);
@@ -50,6 +79,13 @@ public function countryCategory(Request $request, $country, $category)
return view('front.country_category', ['country_locale' => $country_locale, 'category' => $category]);
}
public function all(Request $request, $country)
{
$country_locale = CountryLocale::where('slug', $country)->first();
return view('front.country_all', ['country_locale' => $country_locale]);
}
public function posts(Request $request, $country)
{
return "{$country} : all posts";

50
app/Models/Author.php Normal file
View File

@@ -0,0 +1,50 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Author
*
* @property int $id
* @property string $name
* @property string $avatar
* @property string $bio
* @property bool $enabled
* @property bool $public
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
*
* @property Collection|Post[] $posts
*
* @package App\Models
*/
class Author extends Model
{
protected $table = 'authors';
protected $casts = [
'enabled' => 'bool',
'public' => 'bool'
];
protected $fillable = [
'name',
'avatar',
'bio',
'enabled',
'public'
];
public function posts()
{
return $this->hasMany(Post::class);
}
}

11
app/Models/DraftPost.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DraftPost extends Model
{
use HasFactory;
}

70
app/Models/Post.php Normal file
View File

@@ -0,0 +1,70 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Post
*
* @property int $id
* @property string|null $title
* @property string|null $slug
* @property string|null $excerpt
* @property int|null $author_id
* @property string $featured_image
* @property string $editor
* @property array|null $body
* @property string $post_format
* @property int $comment_count
* @property int $likes_count
* @property string $status
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
*
* @property Author|null $author
* @property Collection|PostCategory[] $post_categories
*
* @package App\Models
*/
class Post extends Model
{
protected $table = 'posts';
protected $casts = [
'author_id' => 'int',
'body' => 'json',
'comment_count' => 'int',
'likes_count' => 'int'
];
protected $fillable = [
'title',
'slug',
'excerpt',
'author_id',
'featured_image',
'editor',
'body',
'post_format',
'comment_count',
'likes_count',
'status'
];
public function author()
{
return $this->belongsTo(Author::class);
}
public function post_categories()
{
return $this->hasMany(PostCategory::class);
}
}

View File

@@ -0,0 +1,49 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class PostCategory
*
* @property int $id
* @property int $post_id
* @property int $category_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
*
* @property Category $category
* @property Post $post
*
* @package App\Models
*/
class PostCategory extends Model
{
protected $table = 'post_categories';
protected $casts = [
'post_id' => 'int',
'category_id' => 'int'
];
protected $fillable = [
'post_id',
'category_id'
];
public function category()
{
return $this->belongsTo(Category::class);
}
public function post()
{
return $this->belongsTo(Post::class);
}
}