in ,

Laravel의 데이터베이스에 여러 확인란의 값을 저장하는 방법은 무엇입니까?

Laravel의 데이터베이스에 체크박스 값을 저장해야 합니다. 수행하는 방법 ?

Laravel의 데이터베이스에 여러 확인란의 값을 저장하는 방법은 무엇입니까?
Laravel의 데이터베이스에 여러 확인란의 값을 저장하는 방법은 무엇입니까?

Laravel의 데이터베이스에 여러 확인란의 값을 저장하는 방법에는 여러 가지가 있습니다. 다음은 몇 가지 옵션입니다.

  1. "부울" 유형 필드 사용 : 각 확인란은 데이터베이스의 부울 유형 필드에 "참" 또는 "거짓"으로 저장할 수 있습니다.
  2. "텍스트" 유형 필드 사용 : 체크박스에 체크된 모든 값을 쉼표로 구분하여 텍스트 타입 필드에 저장할 수 있습니다. 예를 들어 사용자가 "과일" 및 "야채" 상자를 선택한 경우 이 정보를 텍스트 유형 필드에 "과일,야채"로 저장할 수 있습니다.
  3. 관계 테이블 사용 : 동일한 레코드에 연결된 여러 확인란이 있는 경우 관계 테이블을 사용하여 이 데이터를 저장할 수 있습니다. 예를 들어 "카테고리" 열이 있는 "제품" 테이블이 있는 경우 선택한 범주를 각 제품에 연결하는 "제품_카테고리" 테이블을 만들 수 있습니다.
  4. "테이블" 유형 필드 사용 : 배열을 지원하는 데이터베이스(예: PostgreSQL)를 사용하는 경우 배열 유형 필드에 여러 확인란의 값을 저장할 수 있습니다. 이렇게 하면 관계 테이블을 사용하지 않고도 단일 필드에 여러 값을 저장할 수 있습니다.

배열을 사용하여 데이터베이스에 여러 확인란 값 저장

Laravel에서는 배열을 사용하여 단일 필드에 값을 저장함으로써 데이터베이스에 여러 체크박스 값을 저장할 수 있습니다. 다음은 이를 수행하는 방법의 예입니다.

1. 체크박스 값을 저장하기 위해 데이터베이스 테이블에 필드를 추가하는 마이그레이션을 생성합니다. 예를 들어 "options"라는 필드에 값을 저장하려는 경우 다음 마이그레이션을 사용할 수 있습니다.

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddOptionsToTableName extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('table_name', function (Blueprint $table) {
            $table->text('options')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('table_name', function (Blueprint $table) {
            $table->dropColumn('options');
        });
    }
}

2. 양식에서 저장하려는 각 옵션에 대한 확인란을 만듭니다. 예를 들어 :

<input type="checkbox" name="options[]" value="option1"> Option 1
<input type="checkbox" name="options[]" value="option2"> Option 2
<input type="checkbox" name="options[]" value="option3"> Option 3

3. 양식 제출 처리 논리에서 선택한 확인란의 값을 검색하고 데이터베이스에 저장합니다. 예를 들어 :

$options = $request->input('options');

$model = new Model();
$model->options = json_encode($options);
$model->save();

"options" 필드에서 선택된 체크박스의 값을 JSON 인코딩 배열로 저장합니다. 그런 다음 데이터베이스에서 레코드를 검색할 때 JSON 배열을 디코딩하여 선택한 값을 검색하고 표시할 수 있습니다.

$model = Model::find($id);
$options = json_decode($model->options);

Laravel에 여러 확인란 값을 저장하는 샘플 코드

다음은 Laravel의 데이터베이스에 여러 확인란의 값을 저장하기 위한 몇 가지 샘플 코드입니다.

"부울" 유형 필드 사용

"users" 테이블에 "subscription_newsletter" 부울 열 생성:

Schema::table('utilisateurs', function (Blueprint $table) {
    $table->boolean('abonnement_newsletter')->default(0);
});

양식을 제출할 때 사용자의 뉴스레터 구독 등록:

$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();

"텍스트" 유형 필드 사용

"survey" 테이블에서 텍스트 유형의 "options_sélectionées" 열 생성:

Schema::table('sondage', function (Blueprint $table) {
    $table->text('options_sélectionnées');
});

양식을 제출할 때 사용자가 선택한 옵션 저장:

$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();

관계 테이블 사용

"id_product" 및 "id_category" 열이 있는 "categories_products" 테이블 생성:

Schema::create('catégories_produits', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('id_produit');
    $table->integer('id_catégorie');
    $table->timestamps();
});

양식을 제출할 때 사용자가 선택한 범주 저장:

$produit = new Produit;
$produit->save();

foreach ($request->input('catégories') as $catégorie) {
    $catégorie_produit = new CatégorieProduit;
    $catégorie_produit->id_produit = $produit->id;
    $catégorie_produit->id_catégorie = $catégorie;
    $catégorie_produit->save();
}

"테이블" 유형 필드 사용

"poll" 테이블에서 테이블 유형의 "options_selected" 열 생성(PostgreSQL을 사용하는 경우):

Schema::table('sondage', function (Blueprint $table) {
    $table->jsonb('options_sélectionnées');
});

양식을 제출할 때 사용자가 선택한 옵션 저장:

$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();

어떤 경우든 데이터베이스에 저장하기 전에 확인란 값이 적절하게 검증되고 정리되었는지 확인해야 합니다. 이를 위해 라라벨의 검증 컨트롤러와 데이터 필터를 사용할 수 있습니다.

[합계: 1 평균: 5]

Written by 안톤 길데브란트

Anton은 동료 및 개발자 커뮤니티와 코드 팁 및 솔루션을 공유하는 데 열정적인 풀 스택 개발자입니다. 프런트엔드 및 백엔드 기술에 대한 탄탄한 배경 지식을 갖춘 Anton은 다양한 프로그래밍 언어 및 프레임워크에 능숙합니다. 그는 온라인 개발자 포럼의 정회원이며 다른 사람들이 프로그래밍 문제를 해결하는 데 도움이 되는 아이디어와 솔루션을 정기적으로 제공합니다. 여가 시간에 Anton은 해당 분야의 최신 트렌드와 기술을 파악하고 새로운 도구와 프레임워크를 실험하는 것을 즐깁니다.

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드는 표시됩니다 *

당신은 어떻게 생각하십니까?

387 포인트
Upvote Downvote