라라벨 부트캠프 글 등록하기

hyHA·2023년 11월 14일
0
post-custom-banner

navigation 파일 수정

  • resources/views/layouts/navigation.blade.php
<!-- Navigation Links -->
<div class="hidden space-x-8 sm:-my-px sm:ms-10 sm:flex">
	<x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
                        {{ __('Dashboard') }}
    </x-nav-link>
    //아래 코드 새로 작성
    <x-nav-link :href="route('blog.index')" :active="request()->routeIs('blog.index')">
                        {{ __('Blog') }}
    </x-nav-link>
</div>
<!-- Responsive Navigation Menu -->
<div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
	<div class="pt-2 pb-3 space-y-1">
    	<x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
                {{ __('Dashboard') }}
        </x-responsive-nav-link>
        //아래 코드 새로 작성
        <x-responsive-nav-link :href="route('blog.index')" :active="request()->routeIs('blog.index')">
                {{ __('Blog') }}
        </x-responsive-nav-link>
    </div>

컨트롤러 수정

  • http/controllers/BlogController.php
use Illuminate\Http\RedirectResponse;

//...

/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
	$validated = $request->validate([
		'message' => 'required|string|max:255',
	]);
	$request->user()->blog()->create($validated);
	return redirect(route('blog.index'));
}

Model

  • models/User.php
use Illuminate\Database\Eloquent\Relations\HasMany;

public function blog(): HasMany
{
	return $this->hasMany(blog::class);
}
  • models/Blog.php
class Blog extends Model
{
    use HasFactory;

    protected $fillable = [
        'message',
    ]
}

database

참고 - 테이블명은 끝에 s가 자동으로 붙는것 같다.
blog로 작성해왔어서 아래 코드에서 blogs > blog로 수정했더니 아래와 같이 쿼리가 자동으로 blogs라는 테이블을 검색하게 된다. 따라서 자동으로 s가 붙어도 수정하지말고 그냥 넘어가자.

  • 오류코드
    SQLSTATE[42S02]: Base table or view not found: 1146 Table 'blog.blogs' doesn't exist
    // 기존 코드 (예시)
    $query = "SELECT * FROM blogs WHERE ...";
    // 수정된 코드
    $query = "SELECT * FROM blog WHERE ...";
  • database/제일 마지막 파일(create_blog_table.php)
return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('blogs', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained()->cascadeOnDelete();
            $table->string('message');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('blogs');
    }
};

서버 종료 후 php artisan migrate 명령어 실행

이후 sql 접속하여 필드가 아래와 같이 5개 뜨는지 확인

➜  ~ git:(master) ✗ mysql.server start 
➜  ~ git:(master) ✗ mysql -u root -p 
mysql> use blog
mysql> show tables;
mysql> desc blog;

profile
룰루랄라
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 11월 14일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기