메뉴
in ,

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은 해당 분야의 최신 트렌드와 기술을 파악하고 새로운 도구와 프레임워크를 실험하는 것을 즐깁니다.

댓글을 남겨주세요.

모바일 버전 종료