Implement BlogArticle model for recent

This commit is contained in:
Daniel_I_Am 2021-09-01 23:01:54 +02:00
parent 5fe64f0dc1
commit 7d40c5d1cd
6 changed files with 181 additions and 10 deletions

View File

@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use App\Models\BlogArticle;
use Illuminate\Http\Request;
class BlogArticleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\JsonResponse
*/
public function index()
{
return response()->json([]);
}
/**
* Display a list of recent articles.
*
* @return \Illuminate\Http\JsonResponse
*/
public function recent()
{
$data = BlogArticle::orderBy('date', 'desc')->limit(5)->get();
return response()->json($data);
}
/**
* Display a list of popular articles.
*
* @return \Illuminate\Http\JsonResponse
*/
public function popular()
{
return response()->json([]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function store(Request $request)
{
return response()->json([]);
}
/**
* Display the specified resource.
*
* @param \App\Models\BlogArticle $blogArticle
* @return \Illuminate\Http\JsonResponse
*/
public function show(BlogArticle $blogArticle)
{
return response()->json([]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\BlogArticle $blogArticle
* @return \Illuminate\Http\JsonResponse
*/
public function update(Request $request, BlogArticle $blogArticle)
{
return response()->json([]);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\BlogArticle $blogArticle
* @return \Illuminate\Http\JsonResponse
*/
public function destroy(BlogArticle $blogArticle)
{
return response()->json([]);
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BlogArticle extends Model
{
use HasFactory;
protected $fillable = [
'title',
'date',
'summary',
'content'
];
protected $casts = [
'created_at' => 'datetime',
'updated_at' => 'datetime',
'date' => 'datetime',
];
}

View File

@ -0,0 +1,31 @@
<?php
namespace Database\Factories;
use App\Models\BlogArticle;
use Illuminate\Database\Eloquent\Factories\Factory;
class BlogArticleFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = BlogArticle::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $this->faker->text(100),
'date' => $this->faker->dateTimeBetween('100d'),
'summary' => $this->faker->text(200),
'content' => $this->faker->text(1000),
];
}
}

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBlogArticlesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('blog_articles', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('title');
$table->dateTime('date');
$table->string('summary');
$table->text('content');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('blog_articles');
}
}

View File

@ -13,6 +13,6 @@ class DatabaseSeeder extends Seeder
*/ */
public function run() public function run()
{ {
// \App\Models\BlogArticle::factory(50)->create();
} }
} }

View File

@ -19,15 +19,9 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user(); return $request->user();
}); });
Route::get('/blog/recent', function() { Route::get('/blog/recent', [\App\Http\Controllers\BlogArticleController::class, 'recent']);
return [ Route::get('/blog/popular', [\App\Http\Controllers\BlogArticleController::class, 'popular']);
['title' => 'asdf', 'id' => 1, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('13s')], Route::resource('/blog', \App\Http\Controllers\BlogArticleController::class)->except(['create', 'edit']);
['title' => 'asdf', 'id' => 2, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('10m')],
['title' => 'asdf', 'id' => 3, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('15h')],
['title' => 'asdf', 'id' => 4, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('5d')],
['title' => 'asdf', 'id' => 5, 'summary' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo consequatur et, velit earum magni necessitatibus?', 'date' => Carbon::now()->sub('52d')],
];
});
Route::get('/blog/popular', function() { Route::get('/blog/popular', function() {
return [ return [