Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

LaravelDaily / Laravel-9-Beginners Public

Code Issues Pull requests Actions Projects Security Insights

Commit

Lesson 7 - second model Browse files


main

PovilasKorop committed on Apr 9, 2022 1 parent 2c45e20 commit f6124c6

Showing 4 changed files with 60 additions and 76 deletions. Split Unified


Filter changed files 11 app/Http/Controllers/HomeController.php

3 3 namespace App\Http\Controllers;
app 4 4

Http/Controllers 5 5 use App\Models\Category;


6 + use App\Models\Post;
HomeController.php 6 7
7 8 class HomeController extends Controller
Models
8 9 {
Post.php 9 10 public function index()
10 11 {
database/migrations 11 - $allCategories = Category::all();

2022_04_09_060855_create_… 12 + $categories = Category::all();


13 + $posts = Post::when(request('category_id'), function ($query) {
resources/views 14 + $query->where('category_id', request('category_id'));
15 + })
index.blade.php
16 + ->latest()
17 + ->get();
12 18
13 - return view('index', ['categories' => $allCategories]);
19 + return view('index',
20 + compact('categories', 'posts'));
14 21 }
15 22 }

11 app/Models/Post.php

... ... @@ -0,0 +1,11 @@

1 + <?php
2 +
3 + namespace App\Models;
4 +
5 + use Illuminate\Database\Eloquent\Factories\HasFactory;
6 + use Illuminate\Database\Eloquent\Model;
7 +
8 + class Post extends Model
9 + {
10 + use HasFactory;
11 + }
34 database/migrations/2022_04_09_060855_create_posts_table.php

... ... @@ -0,0 +1,34 @@

1 + <?php
2 +
3 + use Illuminate\Database\Migrations\Migration;
4 + use Illuminate\Database\Schema\Blueprint;
5 + use Illuminate\Support\Facades\Schema;
6 +
7 + return new class extends Migration
8 + {
9 + /**
10 + * Run the migrations.
11 + *
12 + * @return void
13 + */
14 + public function up()
15 + {
16 + Schema::create('posts', function (Blueprint $table) {
17 + $table->id();
18 + $table->string('title');
19 + $table->text('post_text');
20 + $table->foreignId('category_id')->constrained();
21 + $table->timestamps();
22 + });
23 + }
24 +
25 + /**
26 + * Reverse the migrations.
27 + *
28 + * @return void
29 + */
30 + public function down()
31 + {
32 + Schema::dropIfExists('posts');
33 + }
34 + };
80 resources/views/index.blade.php

15 15 <div class="row">
16 16 <!-- Blog entries-->
17 17 <div class="col-lg-8">
18 - <!-- Featured blog post-->
19 - <div class="card mb-4">
20 - <a href="#!"><img class="card-img-top" src="https://dummyimage.com/850x350
/dee2e6/6c757d.jpg" alt="..." /></a>
21 - <div class="card-body">
22 - <div class="small text-muted">January 1, 2022</div>
23 - <h2 class="card-title">Featured Post Title</h2>
24 - <p class="card-text">Lorem ipsum dolor sit amet, consectetur adipisicing
elit. Reiciendis aliquid atque, nulla? Quos cum ex quis soluta, a laboriosam. Dicta expedita
corporis animi vero voluptate voluptatibus possimus, veniam magni quis!</p>
25 - <a class="btn btn-primary" href="#!">Read more →</a>
26 - </div>
27 - </div>
28 18 <!-- Nested row for non-featured blog posts-->
29 19 <div class="row">
20 + @foreach ($posts as $post)
30 21 <div class="col-lg-6">
31 22 <!-- Blog post-->
32 23 <div class="card mb-4">
33 24 <a href="#!"><img class="card-img-top" src="https://dummyimage.com
/700x350/dee2e6/6c757d.jpg" alt="..." /></a>
34 25 <div class="card-body">
35 - <div class="small text-muted">January 1, 2022</div>
36 - <h2 class="card-title h4">Post Title</h2>
37 - <p class="card-text">Lorem ipsum dolor sit amet, consectetur
adipisicing elit. Reiciendis aliquid atque, nulla.</p>
38 - <a class="btn btn-primary" href="#!">Read more →</a>
39 - </div>
40 - </div>
41 - <!-- Blog post-->
42 - <div class="card mb-4">
43 - <a href="#!"><img class="card-img-top" src="https://dummyimage.com
/700x350/dee2e6/6c757d.jpg" alt="..." /></a>
44 - <div class="card-body">
45 - <div class="small text-muted">January 1, 2022</div>
46 <h2 class card-title h4 >Post Title</h2>
47 - <p class="card-text">Lorem ipsum dolor sit amet, consectetur
adipisicing elit. Reiciendis aliquid atque, nulla.</p>
48 - <a class="btn btn-primary" href="#!">Read more →</a>
49 - </div>
50 - </div>
51 - </div>
52 - <div class="col-lg-6">
53 - <!-- Blog post-->
54 - <div class="card mb-4">
55 - <a href="#!"><img class="card-img-top" src="https://dummyimage.com
/700x350/dee2e6/6c757d.jpg" alt="..." /></a>
56 - <div class="card-body">
57 - <div class="small text-muted">January 1, 2022</div>
58 - <h2 class="card-title h4">Post Title</h2>
59 - <p class="card-text">Lorem ipsum dolor sit amet, consectetur
adipisicing elit. Reiciendis aliquid atque, nulla.</p>
60 - <a class="btn btn-primary" href="#!">Read more →</a>
61 - </div>
62 - </div>
63 - <!-- Blog post-->
64 - <div class="card mb-4">
65 - <a href="#!"><img class="card-img-top" src="https://dummyimage.com
/700x350/dee2e6/6c757d.jpg" alt="..." /></a>
66 - <div class="card-body">
67 - <div class="small text-muted">January 1, 2022</div>
68 - <h2 class="card-title h4">Post Title</h2>
69 - <p class="card-text">Lorem ipsum dolor sit amet, consectetur
adipisicing elit. Reiciendis aliquid atque, nulla? Quos cum ex quis soluta, a
laboriosam.</p>
26 + <div class="small text-muted">{{ $post->created_at }}</div>
27 + <h2 class="card-title h4">{{ $post->title }}</h2>
28 + <p class="card-text">{{ $post->post_text }}</p>
70 29 <a class="btn btn-primary" href="#!">Read more →</a>
71 30 </div>
72 31 </div>
73 32 </div>
33 + @endforeach
74 34 </div>
75 - <!-- Pagination-->
76 - <nav aria-label="Pagination">
77 - <hr class="my-0" />
78 - <ul class="pagination justify-content-center my-4">
79 - <li class="page-item disabled"><a class="page-link" href="#"
tabindex="-1" aria-disabled="true">Newer</a></li>
80 - <li class="page-item active" aria-current="page"><a class="page-link"
href="#!">1</a></li>
81 - <li class="page-item"><a class="page-link" href="#!">2</a></li>
82 - <li class="page-item"><a class="page-link" href="#!">3</a></li>
83 - <li class="page-item disabled"><a class="page-link" href="#!">...
</a></li>
84 - <li class="page-item"><a class="page-link" href="#!">15</a></li>
85 - <li class="page-item"><a class="page-link" href="#!">Older</a></li>
86 - </ul>
87 - </nav>
88 35 </div>
89 36 <!-- Side widgets-->
90 37 <div class="col-lg-4">
91 - <!-- Search widget-->
92 - <div class="card mb-4">
93 - <div class="card-header">Search</div>
94 - <div class="card-body">
95 - <div class="input-group">
96 - <input class="form-control" type="text" placeholder="Enter search
term..." aria-label="Enter search term..." aria-describedby="button-search" />
97 - <button class="btn btn-primary" id="button-search" type="button">Go!
</button>
98 - </div>
99 - </div>
100 - </div>
101 38 <!-- Categories widget-->
102 39 <div class="card mb-4">
103 40 <div class="card-header">Categories</div>
106 43 <div class="col-sm-12">
107 44 <ul class="list-unstyled mb-0">
108 45 @foreach($categories as $category)
109 - <li><a href="#!">{{ $category->name }}</a></li>
46 + <li><a href="{{ route('home') }}?category_id={{
$category->id }}">{{ $category->name }}</a></li>
110 47 @endforeach
111 48 </ul>
112 49 </div>
113 50 </div>
114 51 </div>
115 52 </div>
116 - <!-- Side widget-->
117 - <div class="card mb-4">
118 - <div class="card-header">Side Widget</div>
119 - <div class="card-body">You can put anything you want inside of these side
widgets. They are easy to use, and feature the Bootstrap 5 card component!</div>
120 - </div>
121 53 </div>
122 54 </div>
123 55 </div>

0 comments on commit f6124c6

Please sign in to comment.

You might also like