<!-- 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>
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'));
}
use Illuminate\Database\Eloquent\Relations\HasMany;
public function blog(): HasMany
{
return $this->hasMany(blog::class);
}
class Blog extends Model
{
use HasFactory;
protected $fillable = [
'message',
]
}
참고 - 테이블명은 끝에 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 ...";
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;
개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.