1. 데이타베이스연결하기 : .env파일에서 설정 할 수 있다.
DB_CONNECTION=mysql
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'someuser'@'localhost';
2. 라라벨을 설치을 하면, 기본적으로 라라벨에서제공해주는 테이블이 있다.
사용자인증에 관련된것들이 기본설치가 되어있다.
이것을 데이타베이스 테이블에 적용하려면 아래와 같은 명령어를 사용해야한다.
php artisan migrate
3. 라라벨에서 기본으로 제공해주는 것 이외에 테이블을 만들고 싶다면, 명령어는 다음과 같다.
예를 들면, products라는 테이블을 만들고 싶다면 아래와 같이 적는다.
php artisan make:migration create_products_table
database>migrations>2022_07_28_013933_create_products_table.php 이런 파일이 생긴다.
기본적으로 아래와 같이 나오는데 timestamps()는 created_at, updated_at이라는 필드를 자동으로 만들어준다.
이곳에 우리가 필요한 필드들을 추가시키고, 그것을 php artisan migrate명령어를 통해서 테이블을 데이타베이스에 올려준다.
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('products');
}
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
//$table->integer('user_id')->unsigned()->index();
// users table의 id를 참조한다. 해당사용자가 작성한 글 삭제 cascade
$table->foreignId(('user_id'))->constrained('users')->onDelete('cascade');
$table->string('title');
$table->string('brand');
$table->string('price');
$table->string('cat');
$table->string('photo')->nullable();
$table->text('memo');
$table->timestamps();
});
}
위와같이 추가 시켜주었다. users테이블의 user_id라는 이름으로 외래키로 추가시켰다. 이것을 php artisan migrate통해 디비에 위의 테이블을 올려준다.
데이타베이스에서 SQL export시켜보면, 아래와같이 확인할 수 있다.
CREATE TABLE `likes` (
`id` bigint(20) UNSIGNED NOT NULL,
`user_id` bigint(20) UNSIGNED NOT NULL,
`products_id` bigint(20) UNSIGNED NOT NULL,
`body` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `products` (
`id` bigint(20) UNSIGNED NOT NULL,
`user_id` bigint(20) UNSIGNED NOT NULL,
`title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`brand` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`price` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`cat` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`photo` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`memo` text COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `users` (
`id` bigint(20) UNSIGNED NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email_verified_at` timestamp NULL DEFAULT NULL,
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4. URL에 따른 경로를 설정 할 수 있다.
http://localhost/products 이면 products페이지를 보여주고 http://localhost/about이면 about페이지를 보여주고 하는 등 경로설정할 수 있다. routes > web.php
Route::get('/products', [ProductController::class, 'index'])->name('products');
/products접속시, ProductController클래스의 index메소드를 불러온다는 뜻이다.
5. 컨트롤러만들기
Auth라는 폴더에 RegisterController를 만든다.
php artisan make:controller Auth\RegisterController
ProductsController를 만든다.
php artisan make:controller ProductsController
컨트롤러에서는 폼에서 값이 넘어오면 그것을 Request로 받아서 그데이타들을 create, delete, update, Read를 시켜준다.
6. 모델 만들기
Products라는 모델을만든다
php artisan make:model Products
폼에서 넘어올 데이타들을$fillable에 넣어야한다.
protected $fillable = [ 'title', 'brand', 'price', 'cat', 'photo', 'memo' ];
7. 뷰페이지 만들기
8. Products테이블에 수십개의 데이타를 무작위로 넣기 : tinker 사용한다.
php artisan tinker
App\Models\Products::factory()->times(100)->create(['user_id' => 1]);
Products모델에 factory를 이용해서 100번 가짜데이타를 생성한다. user_id가 1로 지정한곳에 다 가 이렇게 하겠다고 하는 뜻.
.Net core MVC의 dbseeder와 비슷한 것 같다.
'BackEND > Laravel Project' 카테고리의 다른 글
라라벨에서 어드민계정을 만드는방법 breeze (0) | 2022.08.04 |
---|---|
피드백만들기 (0) | 2022.07.31 |
Create , Read, Update, Delete (0) | 2022.07.31 |