in ,

Laravel मा एक डेटाबेस मा धेरै चेकबक्स मान कसरी भण्डारण गर्ने?

मलाई Laravel मा डाटाबेसमा चेकबक्स मानहरू भण्डारण गर्न आवश्यक छ। कसरि गर्ने ?

Laravel मा एक डेटाबेस मा धेरै चेकबक्स मान कसरी भण्डारण गर्ने?
Laravel मा एक डेटाबेस मा धेरै चेकबक्स मान कसरी भण्डारण गर्ने?

Laravel मा एक डेटाबेस मा बहु चेकबक्स को मान भण्डारण गर्न धेरै तरिकाहरू छन्। यहाँ केहि विकल्पहरू छन्:

  1. "बुलियन" प्रकारको फिल्ड प्रयोग गर्नुहोस् : प्रत्येक चेक बाकस तपाईको डाटाबेसमा बुलियन प्रकारको फिल्डमा "सत्य" वा "गलत" को रूपमा बचत गर्न सकिन्छ।
  2. "पाठ" प्रकारको फिल्ड प्रयोग गर्नुहोस् : तपाईंले प्रत्येक मानलाई अल्पविरामले छुट्याएर, पाठ प्रकारको क्षेत्रमा सबै जाँच गरिएका चेकबक्सहरूको मानहरू भण्डारण गर्न सक्नुहुन्छ। उदाहरणका लागि, यदि प्रयोगकर्ताले "फलफूलहरू" र "तरकारीहरू" बाकसहरू जाँच गरे भने, तपाईंले यो जानकारीलाई पाठ प्रकारको क्षेत्रमा "फलफूल, तरकारीहरू" को रूपमा बचत गर्न सक्नुहुन्छ।
  3. सम्बन्ध तालिका प्रयोग गर्नुहोस् : यदि तपाइँसँग एउटै रेकर्डमा लिङ्क गरिएका धेरै चेकबक्सहरू छन् भने, तपाइँ यो डाटा भण्डारण गर्नको लागि सम्बन्ध तालिका प्रयोग गर्न सक्नुहुन्छ। उदाहरणका लागि, यदि तपाईंसँग "श्रेणीहरू" स्तम्भ भएको "उत्पादनहरू" तालिका छ भने, तपाईंले प्रत्येक उत्पादनमा चयन गरिएका कोटीहरूलाई लिङ्क गर्ने "उत्पादन_श्रेणीहरू" तालिका बनाउन सक्नुहुन्छ।
  4. "तालिका" प्रकारको फिल्ड प्रयोग गर्नुहोस् : यदि तपाइँ एरे (जस्तै PostgreSQL) लाई समर्थन गर्ने डाटाबेस प्रयोग गर्दै हुनुहुन्छ भने, तपाइँ एरे प्रकार फिल्डमा धेरै चेकबक्सहरूको मानहरू भण्डारण गर्न सक्नुहुन्छ। यसले तपाइँलाई सम्बन्ध तालिका प्रयोग नगरीकन एकल क्षेत्रमा धेरै मानहरू भण्डारण गर्न अनुमति दिनेछ।

एरे प्रयोग गरेर डेटाबेसमा बहु चेकबक्स मानहरू भण्डार गर्नुहोस्

Laravel मा, तपाईले एकल फिल्डमा मानहरू भण्डारण गर्न एरे प्रयोग गरेर डेटाबेसमा धेरै चेकबक्स मानहरू भण्डारण गर्न सक्नुहुन्छ। यहाँ तपाइँ कसरी यो गर्न सक्नुहुन्छ को एक उदाहरण छ:

1. चेकबक्स मानहरू भण्डारण गर्न तपाईंको डाटाबेस तालिकामा फिल्ड थप्न माइग्रेसन सिर्जना गर्नुहोस्। उदाहरणका लागि, यदि तपाइँ "विकल्प" भनिने फिल्डमा मानहरू भण्डारण गर्न चाहनुहुन्छ भने, तपाइँ निम्न माइग्रेसन प्रयोग गर्न सक्नुहुन्छ:

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();

यसले JSON एन्कोड गरिएको एरेको रूपमा "विकल्पहरू" फिल्डमा चयन गरिएका चेकबक्सहरूको मानहरू भण्डारण गर्छ। तपाईले डाटाबेसबाट रेकर्ड पुन: प्राप्त गर्दा JSON एरे डिकोड गरेर चयन गरिएका मानहरू पुनःप्राप्त गर्न र प्रदर्शन गर्न सक्नुहुन्छ।

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

Laravel मा धेरै चेकबक्स मानहरू भण्डारण गर्न नमूना कोडहरू

यहाँ Laravel मा एक डेटाबेस मा बहु चेकबक्स को मान भण्डारण गर्न को लागी केहि नमूना कोडहरु छन्:

"बुलियन" प्रकारको फिल्ड प्रयोग गर्नुहोस्

"उपयोगकर्ताहरू" तालिकामा "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();

"पाठ" प्रकारको फिल्ड प्रयोग गर्नुहोस्

"सर्वेक्षण" तालिकामा पाठ प्रकारको "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" स्तम्भहरूको साथ तालिका "श्रेणीहरू_उत्पादनहरू" को सिर्जना:

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();
}

"तालिका" प्रकारको फिल्ड प्रयोग गर्नुहोस्

तालिका "पोल" मा तालिका प्रकारको स्तम्भ "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();

यो नोट गर्न महत्त्वपूर्ण छ कि, कुनै पनि अवस्थामा, तपाइँ तपाइँको डाटाबेसमा बचत गर्नु अघि तपाइँको चेकबक्स मानहरू ठीकसँग मान्य र सफा गरिएको छ भनेर सुनिश्चित गर्न आवश्यक छ। तपाईं यसको लागि Laravel को प्रमाणीकरण नियन्त्रकहरू र डेटा फिल्टरहरू प्रयोग गर्न सक्नुहुन्छ।

[कुल: 1 अर्थ: 5]

द्वारा लिखित एन्टोन गिल्डेब्रान्ड

एन्टोन एक पूर्ण स्ट्याक विकासकर्ता हो जुन आफ्ना सहकर्मीहरू र विकासकर्ता समुदायसँग कोड सुझावहरू र समाधानहरू साझेदारी गर्ने बारे भावुक छन्। फ्रन्ट-एन्ड र ब्याक-एन्ड टेक्नोलोजीहरूमा ठोस पृष्ठभूमिको साथ, एन्टोन विभिन्न प्रोग्रामिङ भाषाहरू र फ्रेमवर्कहरूमा निपुण छ। उहाँ अनलाइन विकासकर्ता फोरमहरूको सक्रिय सदस्य हुनुहुन्छ र नियमित रूपमा अरूलाई प्रोग्रामिङ चुनौतीहरू समाधान गर्न मद्दत गर्न विचार र समाधानहरू योगदान गर्नुहुन्छ। आफ्नो फुर्सदको समयमा, एन्टोन फिल्डमा नवीनतम प्रचलन र प्रविधिहरूमा अद्यावधिक रहन र नयाँ उपकरणहरू र फ्रेमवर्कहरू प्रयोग गरेर आनन्द लिन्छ।

Laisser संयुक्त राष्ट्र commentaire

तपाईको इ-मेल ठेगाना प्रकाशित हुँदैन। आवश्यक क्षेत्रहरू मार्क *

तिम्रो के बिचार छ?