๐Ÿพ์ž ๋ฉ๋ฉ์Œค (๋ฐค ํ•˜๋Š˜ ์ž‘์€ โ˜…)
๐Ÿพ์ž ๋ฉ๋ฉ์Œค์˜ ์ปดํ“จํ„ฐ ๋ฐ ์ฝ”๋”ฉ ๊ณต๋ถ€
๐Ÿพ์ž ๋ฉ๋ฉ์Œค (๋ฐค ํ•˜๋Š˜ ์ž‘์€ โ˜…)
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ชจ๋“  ๊ฒŒ์‹œ๊ธ€ (63)
    • Docker (๋„์ปค) (34)
      • ์„œ๋ฒ„๊ตฌ์ถ•(SSL) (19)
      • ์„œ๋ฒ„ ๋ชจ๋‹ˆํ„ฐ๋ง (5)
      • ModSecurity,Fail2ban (5)
      • ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ (3)
      • ๋„์ปค ์„ค์น˜ (2)
    • ๋ฆฌ๋ˆ…์Šค (2)
    • VSCODE (1)
    • ํด๋ผ์šฐ๋“œ (4)
      • ์˜ค๋ผํดํด๋ผ์šฐ๋“œ (2)
      • ๊ตฌ๊ธ€ํด๋ผ์šฐ๋“œ (2)
    • ๋ผ๋ผ๋ฒจ(laravel) (21)
    • ์žก๋™์‚ฌ๋‹ˆ (1)
๋ฐ˜์‘ํ˜•

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ์ž์ž‘ํ”„๋กœ๊ทธ๋žจ(๋ฉ๋ฉ์Œค์˜ ์ทจ๋ฏธ์ƒํ™œ)
  • ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋‘ ๋ณด๊ธฐ(๋ฉ๋ฉํ™ˆ)
  • ์˜›๋‚  ๋ฉ๋ฉํ™ˆ
  • ์ถ”์–ต์˜์ž‘ํ’ˆ์ง‘
250x250

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๐Ÿพ์ž ๋ฉ๋ฉ์Œค (๋ฐค ํ•˜๋Š˜ ์ž‘์€ โ˜…)

๐Ÿพ์ž ๋ฉ๋ฉ์Œค์˜ ์ปดํ“จํ„ฐ ๋ฐ ์ฝ”๋”ฉ ๊ณต๋ถ€

๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ_8. (DB) Model ๋ฐ ๊ธฐํƒ€ ํŒŒ์ผ ์ƒ์„ฑ
๋ผ๋ผ๋ฒจ(laravel)

๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ_8. (DB) Model ๋ฐ ๊ธฐํƒ€ ํŒŒ์ผ ์ƒ์„ฑ

2022. 10. 3. 12:06
728x90
๋ฐ˜์‘ํ˜•
โ™ง '๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ' ํ”„๋กœ์ ํŠธ ๋ชฉ์ฐจ โ™ง (๋ณด์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋”๋ณด๊ธฐ ๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.)
๋”๋ณด๊ธฐ

0. ๋ผ๋ผ๋ฒจ(laravel) ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ-๋ฐฉ๋ฒ•1 (Windows & ๋„์ปค(docker) & ๋ผ๋ผ๋…(laradock) ํ™œ์šฉ)

0. ๋ผ๋ผ๋ฒจ(laravel) ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ-๋ฐฉ๋ฒ•2 (Windows & ๋„์ปค(docker) & sail ํ™œ์šฉ)

1. ๊ธฐ์กด ์†Œ์Šค

2. ๊ธฐ์กด ์†Œ์Šค๋ฅผ ํ•˜๋‚˜์˜ ๋ธ”๋ ˆ์ด๋“œ๋กœ

3. ์ปจํŠธ๋กค๋Ÿฌ ํ•˜๋‚˜ ์ƒ์„ฑ

4. javascript, css ์ •๋ฆฌ

5. ๊ธฐ์กด PHP ๋กœ์ง์„ ์ปจํŠธ๋กค๋Ÿฌ๋กœ

6. ๋ธ”๋ ˆ์ด๋“œ ๋ฌธ๋ฒ•์œผ๋กœ ์ˆ˜์ •

7. ์™ธ๋ถ€ ๋ธ”๋ ˆ์ด๋“œ ํŒŒ์ผ, component ํ™œ์šฉ

8. (DB) Model ๋ฐ ๊ธฐํƒ€ ํŒŒ์ผ ์ƒ์„ฑ

9. (DB) ๋”๋ฏธ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊ธ€๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

10. (DB) ๋ชจ๋ธ, DB ํ™œ์šฉ ์—ฐ์Šต

11. (DB) ๊ธฐ์กด ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์„ DB๋กœ ๋ณ€ํ™˜

12. (DB) DB ๋ฐ ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„

13. ๋กœ๊ทธ์ธ ๊ตฌํ˜„์„ ์œ„ํ•œ ์Šคํƒ€ํ„ฐํ‚คํŠธ Breeze ์„ค์น˜ ๋ฐ ๋กœ๊ทธ์ธ ์ž‘์—…

14. ๋กœ๊ทธ์ธ ์ฐฝ ๋’ท๋ฐฐ๊ฒฝ๋„ ๋™์˜์ƒ์ด ๋ณด์ด๋„๋ก ์ˆ˜์ •

15. ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ๋ฆฌ์ŠคํŠธ ํ•œ๋ฒˆ์— ๋ณด๊ธฐ

16. ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •ํ•˜๊ธฐ

17. ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œํ•˜๊ธฐ

18. ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ ๊ฒŒ์‹œ๊ธ€ ์ƒˆ๋กœ ์ž‘์„ฑํ•˜๊ธฐ

19. ๋ฐฉ๋ฌธ์ž ์ˆ˜ ๊ตฌํ˜„ํ•˜๊ธฐ => ์‹คํŒจ => ์„ฑ๊ณต


ํ˜„์žฌ ๋ณด์—ฌ์ง€๋Š” ํ”„๋กœ๊ทธ๋žจ ์„ค๋ช…๋“ค์€ ์ปจํŠธ๋กค๋Ÿฌ ์•ˆ์— ๋ฐฐ์—ด๋กœ ํ•˜๋“œ ์ฝ”๋”ฉ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ DB์— ์ €์žฅํ•ด๋‘๊ณ  ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

1. DB ์—ฐ๊ฒฐ ์„ค์ •

.env ํŒŒ์ผ์„ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด  DB ์ ‘์† ๊ด€๋ จ ๋‚ด์šฉ์ด ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ด ๊ธฐ๋ณธ ๋‚ด์šฉ ๊ทธ๋Œ€๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ , ์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ณธ ๊ฐœ๋ฐœํ™˜๊ฒฝ์€ ์œˆ๋„์šฐ์ฆˆ์—์„œ docker๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ wsl๋ฅผ ์ž…๋ ฅ ํ›„ ./vendor/bin/sail up์„ ์ž…๋ ฅํ•˜์—ฌ ์‹คํ–‰์‹œ์ผฐ๋‹ค๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„์™€ ๊ฐ™์ด munghome ์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•˜๋‚˜ ์ƒ์„ฑ๋˜์–ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜น์‹œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์‹คํ–‰์‹œ์ผฐ์„ ๊ฒฝ์šฐ ๊ฐ์ž์˜ ๋ฐฉ๋ฒ•์œผ๋กœ DB๋ฅผ ์ƒ์„ฑํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

2. Model, Factory, migration ์ƒ์„ฑ

๊ฐ€. Post ๊ด€๋ จ ํŒŒ์ผ๋“ค ์ƒ์„ฑ (ํ”„๋กœ๊ทธ๋žจ ์„ค๋ช…๋“ค์„ ์ €์žฅํ•ด๋‘๋Š” DB์™€ ๊ด€๋ จ์žˆ๋Š” ๊ฒƒ๋“ค)

docker exec -it munghome-laravel.test-1 php artisan make:model Post -cmf
or
./vendor/bin/sail php artisan make:model Post -cmf
or
php artisan make:model Post -cmf

์ฝ˜์†”์— ์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

 

๋‚˜. Category ๊ด€๋ จ ํŒŒ์ผ๋“ค ์ƒ์„ฑ (ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ„๋ฅ˜ํ•ด ๋‘๊ธฐ ์œ„ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ๋“ค์„ ์ €์žฅํ•ด๋‘๋Š” DB์™€ ๊ด€๋ จ์žˆ๋Š” ๊ฒƒ๋“ค)

์•ž ๊ฐ€๋ฒˆ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด, ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋œ๋‹ค. (๋‹จ, ์˜ต์…˜ ์ค‘์— -c (์ปจํŠธ๋กค๋Ÿฌ)๋Š” ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅํ•˜์ง€ ์•Š์Œ.)

docker exec -it munghome-laravel.test-1 php artisan make:model Category -mf

 

3. database/migrations ์ˆ˜์ • => ํ…Œ์ด๋ธ” ๋ฐ ํ•„๋“œ ์ƒ์„ฑ์„ ์œ„ํ•œ ์ •๋ณด ์ž…๋ ฅ

๊ฐ€. 2022_10_02_134550_create_posts_table.php ์ˆ˜์ • (์ด ํŒŒ์ผ ์ด๋ฆ„์€ ํŒŒ์ผ ์ƒ์„ฑ์‹œ์˜ ๋‚ ์งœ ์‹œ๊ฐ„ ๋“ฑ์ด ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋จ.)

public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->integer('order');
            $table->foreignId('category_id');
            $table->date('created');
            $table->string('title');
            $table->string('version');
            $table->text('excerpt');
            $table->text('body');
            $table->text('link_blog')->nullable()->default(NULL);
            $table->text('link_youtube')->nullable()->default(NULL);
            $table->timestamps();
        });
    }

 

๋‚˜. 2022_10_03_003200_create_categories_table.php ์ˆ˜์ • (์ด ํŒŒ์ผ ์ด๋ฆ„์€ ํŒŒ์ผ ์ƒ์„ฑ์‹œ์˜ ๋‚ ์งœ ์‹œ๊ฐ„ ๋“ฑ์ด ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋จ.)

public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->integer('order');
            $table->timestamps();
        });
    }

 

4. database/factories ์ˆ˜์ • => ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•จ.

๊ฐ€. PostFactory.php ์ˆ˜์ •

public function definition()
    {
        return [
            'order' => 1,
            'category_id' => Category::factory(),
            'created' => now(),
            'version' => '1.0',
            'title' => $this->faker->sentence(),
            'excerpt' => $this->faker->sentence(),
            'link_blog' => 'https://mungkhs.tistory.com/104',
            'link_youtube' => 'https://youtu.be/PoLoiscfgMo',
            'body' => '<p>'.implode('</p><p>', $this->faker->paragraphs(6)).'</p>',
        ];
    }

๋‚˜. CategoryFactory.php ์ˆ˜์ •

public function definition()
    {

        return [
        	'name' => $this->faker->unique()->wordsslug(2,true),
            //wordsslug ํ•จ์ˆ˜๋Š” ํ•œ๊ธ€์„ ์“ฐ๊ธฐ ์œ„ํ•ด ์ œ๊ฐ€ ์ƒˆ๋กœ ๋งŒ๋“  ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. 
            //๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
            //ํ•œ๊ธ€ ๋ฐ ์œ„ wordsslug ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ ค๋ฉด ๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€์„ ์ฐธ๊ณ ํ•˜์‹œ๊ณ ,
            //๊ทธ๋ƒฅ ๋ผํ‹ด์–ด๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์œ„๋ฅผ ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ณ , ์•„๋ž˜ ์ฃผ์„์„ ์ง€์›Œ์ฃผ์„ธ์š”.
            //'name' => $this->faker->unique()->word(),
            'order' => 1,
        ];
    }

๋‹ค. database/seeders/DatavaseSeeder.php ์ˆ˜์ • => ๋”๋ฏธ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๊ฐฏ์ˆ˜ ๋“ฑ ์„ค์ •

public function run()
    {
        Post::factory(15)->create();
    }

 

5. app/Http/Models ์ˆ˜์ • 

๊ฐ€. Post.php ์ˆ˜์ •

class Post extends Model
{
    use HasFactory;

    public function category()
    {
         return $this->belongsTo(Category::class);
    }
}

 

๋‚˜. Category.php ์ˆ˜์ •

class Category extends Model
{
    use HasFactory;

    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

 

6. ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์‹ค์ œ ์ƒ์„ฑ

docker exec -it munghome-laravel.test-1 php artisan migrate:fresh --seed

์ฝ˜์†”์— ์œ„์™€ ๊ฐ™์ด ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์‹ค์ œ ๋”๋ฏธ๋ฐ์ดํ„ฐ๋“ค์ด DB์— ์ƒ์„ฑ๋œ๋‹ค.

 

7. ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊ธ€๋กœ ๋งŒ๋“ค๊ธฐ => ๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€ ์ฐธ๊ณ 

๊ธฐ๋ณธ ์„ค์ • ์ƒํƒœ์—์„œ ์œ„ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด ๋ผํ‹ด์–ด๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๋ช‡๊ฐ€์ง€ ์ž‘์—…์„ ํ†ตํ•ด ๋”๋ฏธ๋ฐ์ดํ„ฐ๋„ ๋ชจ๋‘ ํ•œ๊ธ€๋กœ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์™€ ๊ฐ™์ด ํ•œ๊ธ€๋กœ ์„ค์ •ํ•˜์‹œ๋ ค๋ฉด ๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 


๐Ÿบ๐Ÿบ ์ž‘์—…ํ•œ ๋ชจ๋“  ์†Œ์Šค๋Š” ์•„๋ž˜ ๋งํฌ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿบ๐Ÿบ

https://github.com/mmssem/munghome

 

GitHub - mmssem/munghome

Contribute to mmssem/munghome development by creating an account on GitHub.

github.com

 

 

728x90
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๋ผ๋ผ๋ฒจ(laravel)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ_10. (DB) ๋ชจ๋ธ, DB ํ™œ์šฉ ์—ฐ์Šต  (0) 2022.10.03
๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ_9. (DB) ๋”๋ฏธ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊ธ€๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•  (0) 2022.10.03
๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ_7. ์™ธ๋ถ€ ๋ธ”๋ ˆ์ด๋“œ ํŒŒ์ผ, component ํ™œ์šฉ  (0) 2022.10.02
๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ_6. ๋ธ”๋ ˆ์ด๋“œ ๋ฌธ๋ฒ•์œผ๋กœ ์ˆ˜์ •  (0) 2022.10.02
๋ฉ๋ฉํ™ˆ์„ ๋ผ๋ผ๋ฒจ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ_5. ๊ธฐ์กด PHP ๋กœ์ง์„ ์ปจํŠธ๋กค๋Ÿฌ๋กœ  (0) 2022.10.02
    ๐Ÿพ์ž ๋ฉ๋ฉ์Œค (๋ฐค ํ•˜๋Š˜ ์ž‘์€ โ˜…)
    ๐Ÿพ์ž ๋ฉ๋ฉ์Œค (๋ฐค ํ•˜๋Š˜ ์ž‘์€ โ˜…)
    ๐Ÿพ์ž(๊ฐœ๋ฐœ์ž) ๋ฉ๋ฉ์Œค์˜ ์ปดํ“จํ„ฐ ๋ฐ ์ฝ”๋”ฉ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•ด๋‘๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”