in ,

როგორ შევინახოთ რამდენიმე Checkbox-ის მნიშვნელობები მონაცემთა ბაზაში Laravel-ში?

მე უნდა შევინახო ჩამრთველის მნიშვნელობები მონაცემთა ბაზაში Laravel-ში. Როგორ უნდა გავაკეთოთ ?

როგორ შევინახოთ რამდენიმე Checkbox-ის მნიშვნელობები მონაცემთა ბაზაში Laravel-ში?
როგორ შევინახოთ რამდენიმე Checkbox-ის მნიშვნელობები მონაცემთა ბაზაში Laravel-ში?

არსებობს რამდენიმე გზა, რომ შეინახოთ მრავალი ყუთის მნიშვნელობები მონაცემთა ბაზაში Laravel-ში. აქ არის რამდენიმე ვარიანტი:

  1. გამოიყენეთ "ლოგიკური" ტიპის ველი : თითოეული ჩამრთველი შეიძლება შენახული იყოს როგორც "true" ან "false" თქვენს მონაცემთა ბაზაში ლოგიკური ტიპის ველში.
  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-ში მონაცემთა ბაზაში მრავალი ჩამრთველის მნიშვნელობების შესანახად:

გამოიყენეთ "ლოგიკური" ტიპის ველი

"გამოწერის_საინფორმაციო ბიულეტენის" ლოგიკური სვეტის შექმნა "მომხმარებლების" ცხრილში:

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

გამოიყენეთ ურთიერთობის ცხრილი

ცხრილის "categories_products" შექმნა სვეტებით "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]

დაწერილია ანტონ გილდბრანდი

ანტონი არის სრული სტეკის დეველოპერი, რომელიც გატაცებულია კოდის რჩევებისა და გადაწყვეტილებების გაზიარებით თავის კოლეგებთან და დეველოპერის საზოგადოებასთან. წინა და უკანა ტექნოლოგიების მყარი ფონით, ანტონი ფლობს სხვადასხვა პროგრამირების ენებსა და ჩარჩოებს. ის არის ონლაინ დეველოპერების ფორუმების აქტიური წევრი და რეგულარულად აწვდის იდეებსა და გადაწყვეტილებებს, რათა დაეხმაროს სხვებს პროგრამირების გამოწვევების გადაჭრაში. თავისუფალ დროს ანტონს უყვარს უახლესი ტენდენციებისა და ტექნოლოგიების სიახლეები და ექსპერიმენტები ახალი ინსტრუმენტებითა და ჩარჩოებით.

დატოვე კომენტარი

თქვენი ელ.ფოსტის მისამართი არ გამოქვეყნდება. აუცილებელი ველი მონიშნულია *

რას ფიქრობთ?

387 ქულა
Upvote Downvote