in ,

Paano mag-imbak ng maramihang mga halaga ng Checkbox sa isang database sa Laravel?

Kailangan kong mag-imbak ng mga halaga ng checkbox sa database sa Laravel. Kung paano ito gawin ?

Paano mag-imbak ng maramihang mga halaga ng Checkbox sa isang database sa Laravel?
Paano mag-imbak ng maramihang mga halaga ng Checkbox sa isang database sa Laravel?

Mayroong ilang mga paraan upang maiimbak ang mga halaga ng maraming mga checkbox sa isang database sa Laravel. Narito ang ilang mga opsyon:

  1. Gumamit ng field ng uri ng "boolean". : bawat checkbox ay maaaring i-save bilang "true" o "false" sa isang boolean type na field sa iyong database.
  2. Gumamit ng field ng uri ng “text”. : maaari mong iimbak ang mga halaga ng lahat ng naka-check na checkbox sa isang field ng uri ng teksto, na naghihiwalay sa bawat halaga ng kuwit. Halimbawa, kung nilagyan ng check ng user ang mga kahon ng "prutas" at "gulay", maaari mong i-save ang impormasyong ito bilang "mga prutas, gulay" sa isang field ng uri ng teksto.
  3. Gumamit ng talahanayan ng relasyon : kung mayroon kang ilang mga checkbox na naka-link sa parehong tala, maaari kang gumamit ng talahanayan ng kaugnayan upang iimbak ang data na ito. Halimbawa, kung mayroon kang talahanayang "mga produkto" na may column na "mga kategorya," maaari kang lumikha ng talahanayang "mga_produkto" na nagli-link sa mga napiling kategorya sa bawat produkto.
  4. Gumamit ng field ng uri ng "talahanayan". : Kung gumagamit ka ng database na sumusuporta sa mga arrays (tulad ng PostgreSQL), maaari mong iimbak ang mga value ng maraming checkbox sa isang field na uri ng array. Papayagan ka nitong mag-imbak ng maramihang mga halaga sa isang field nang hindi kinakailangang gumamit ng talahanayan ng relasyon.

Mag-imbak ng maramihang mga halaga ng checkbox sa isang database gamit ang isang array

Sa Laravel, maaari kang mag-imbak ng maraming mga halaga ng checkbox sa isang database sa pamamagitan ng paggamit ng isang array upang iimbak ang mga halaga sa isang solong field. Narito ang isang halimbawa kung paano mo ito magagawa:

1. Gumawa ng migration para magdagdag ng field sa iyong database table para mag-imbak ng mga value ng checkbox. Halimbawa, kung gusto mong iimbak ang mga halaga sa isang field na tinatawag na "mga opsyon", maaari mong gamitin ang sumusunod na paglipat:

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. Sa iyong form, lumikha ng mga checkbox para sa bawat opsyon na gusto mong i-save. Halimbawa :

<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. Sa iyong lohika sa pagproseso ng pagsusumite ng form, kunin ang mga halaga ng mga napiling checkbox at iimbak ang mga ito sa database. Halimbawa :

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

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

Iniimbak nito ang mga halaga ng mga napiling checkbox sa field na "mga opsyon" bilang JSON na naka-encode na array. Maaari mong kunin at ipakita ang mga napiling halaga sa pamamagitan ng pag-decode ng JSON array kapag nakuha mo ang record mula sa database.

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

Mga sample na code upang mag-imbak ng maramihang mga halaga ng checkbox sa Laravel

Narito ang ilang mga sample na code para sa pag-iimbak ng mga halaga ng maramihang mga checkbox sa isang database sa Laravel:

Gumamit ng field ng uri ng "boolean".

Paglikha ng boolean na column na "subscription_newsletter" sa talahanayan ng "mga user":

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

Pagpaparehistro ng subscription ng user sa newsletter kapag isinumite ang form:

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

Gumamit ng field ng uri ng “text”.

Paglikha ng column na "options_séléctionées" ng uri ng teksto sa talahanayan ng "survey":

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

Sine-save ang mga opsyon na pinili ng user kapag isinusumite ang form:

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

Gumamit ng talahanayan ng relasyon

Paglikha ng talahanayang "categories_products" na may mga column na "id_product" at "id_category":

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

Sine-save ang mga kategorya na pinili ng user kapag isinusumite ang form:

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

Gumamit ng field ng uri ng "talahanayan".

Paglikha ng column na "options_selected" ng uri ng talahanayan sa table na "poll" (kung gumagamit ka ng PostgreSQL):

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

Sine-save ang mga opsyon na pinili ng user kapag isinusumite ang form:

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

Mahalagang tandaan na, sa anumang kaso, kakailanganin mong tiyakin na ang iyong mga halaga ng checkbox ay wastong napatunayan at nililinis bago i-save sa iyong database. Maaari mong gamitin ang validation controllers at data filter ng Laravel para dito.

[Kabuuan: 1 ibig sabihin: 5]

Sinulat ni Anton Gildebrand

Si Anton ay isang full stack developer na may hilig sa pagbabahagi ng mga tip at solusyon sa code sa kanyang mga kasamahan at sa komunidad ng developer. Sa matibay na background sa front-end at back-end na mga teknolohiya, si Anton ay bihasa sa iba't ibang programming language at frameworks. Siya ay isang aktibong miyembro ng mga online na forum ng developer at regular na nag-aambag ng mga ideya at solusyon upang matulungan ang iba na malutas ang mga hamon sa programming. Sa kanyang bakanteng oras, nasisiyahan si Anton na manatiling napapanahon sa mga pinakabagong uso at teknolohiya sa larangan at nag-eeksperimento sa mga bagong tool at frameworks.

-iwan Ng komento

Ang iyong email address ay hindi mai-publish. Mga kinakailangang patlang ay minarkahan *

Ano sa tingin ninyo?

387 Mga puntos
Upvote Downvote