in ,

ວິທີການເກັບຄ່າ Checkbox ຫຼາຍໃນຖານຂໍ້ມູນໃນ Laravel?

ຂ້ອຍຈໍາເປັນຕ້ອງເກັບຮັກສາຄ່າ checkbox ໃນຖານຂໍ້ມູນໃນ Laravel. ເຮັດແນວໃດ?

ວິທີການເກັບຄ່າ Checkbox ຫຼາຍໃນຖານຂໍ້ມູນໃນ Laravel?
ວິທີການເກັບຄ່າ Checkbox ຫຼາຍໃນຖານຂໍ້ມູນໃນ Laravel?

ມີຫຼາຍວິທີທີ່ຈະເກັບຄ່າຂອງ checkbox ຫຼາຍໃນຖານຂໍ້ມູນໃນ Laravel. ນີ້ແມ່ນບາງທາງເລືອກ:

  1. ໃຊ້ຊ່ອງຂໍ້ມູນປະເພດ "boolean". : ແຕ່ລະ checkbox ສາມາດຖືກບັນທຶກໄວ້ເປັນ "ຄວາມຈິງ" ຫຼື "false" ໃນຊ່ອງປະເພດ boolean ໃນຖານຂໍ້ມູນຂອງທ່ານ.
  2. ໃຊ້ຊ່ອງຂໍ້ມູນປະເພດ "ຂໍ້ຄວາມ". : ທ່ານສາມາດເກັບຄ່າຂອງກ່ອງກາໝາຍທັງໝົດໃນຊ່ອງຂໍ້ມູນປະເພດຂໍ້ຄວາມ, ແຍກແຕ່ລະຄ່າດ້ວຍເຄື່ອງໝາຍຈຸດ. ຕົວຢ່າງ, ຖ້າຜູ້ໃຊ້ກວດເບິ່ງກ່ອງ "ຫມາກໄມ້" ແລະ "ຜັກ", ທ່ານສາມາດບັນທຶກຂໍ້ມູນນີ້ເປັນ "ຫມາກໄມ້, ຜັກ" ໃນປະເພດຂໍ້ຄວາມ.
  3. ໃຊ້ຕາຕະລາງຄວາມສໍາພັນ : ຖ້າທ່ານມີ checkboxes ຫຼາຍອັນທີ່ເຊື່ອມຕໍ່ກັບບັນທຶກດຽວກັນ, ທ່ານສາມາດນໍາໃຊ້ຕາຕະລາງທີ່ກ່ຽວຂ້ອງເພື່ອເກັບຮັກສາຂໍ້ມູນນີ້. ຕົວຢ່າງ, ຖ້າທ່ານມີຕາຕະລາງ "ຜະລິດຕະພັນ" ທີ່ມີຄໍລໍາ "ປະເພດ", ທ່ານສາມາດສ້າງຕາຕະລາງ "ປະເພດຜະລິດຕະພັນ" ທີ່ເຊື່ອມຕໍ່ປະເພດທີ່ເລືອກກັບແຕ່ລະຜະລິດຕະພັນ.
  4. ໃຊ້ຊ່ອງຂໍ້ມູນປະເພດ "ຕາຕະລາງ". : ຖ້າທ່ານກໍາລັງໃຊ້ຖານຂໍ້ມູນທີ່ສະຫນັບສະຫນູນ arrays (ເຊັ່ນ: PostgreSQL), ທ່ານສາມາດເກັບຮັກສາຄ່າຂອງ checkboxes ຫຼາຍຢູ່ໃນຊ່ອງປະເພດ array. ນີ້ຈະຊ່ວຍໃຫ້ທ່ານສາມາດເກັບຄ່າຫຼາຍໃນພາກສະຫນາມດຽວໂດຍບໍ່ຈໍາເປັນຕ້ອງໃຊ້ຕາຕະລາງການພົວພັນ.

ເກັບຮັກສາຄ່າ checkbox ຫຼາຍໃນຖານຂໍ້ມູນໂດຍໃຊ້ array

ໃນ Laravel, ທ່ານສາມາດເກັບຄ່າ checkbox ຫຼາຍໃນຖານຂໍ້ມູນໂດຍໃຊ້ array ເພື່ອເກັບຄ່າໃນພາກສະຫນາມດຽວ. ນີ້ແມ່ນຕົວຢ່າງຂອງວິທີທີ່ທ່ານສາມາດເຮັດໄດ້:

1. ສ້າງການເຄື່ອນຍ້າຍເພື່ອເພີ່ມຊ່ອງໃສ່ຕາຕະລາງຖານຂໍ້ມູນຂອງທ່ານເພື່ອເກັບຄ່າ checkbox. ຕົວຢ່າງ: ຖ້າທ່ານຕ້ອງການເກັບຄ່າໃນຊ່ອງຂໍ້ມູນທີ່ເອີ້ນວ່າ "ທາງເລືອກ", ທ່ານສາມາດນໍາໃຊ້ການໂອນຍ້າຍຕໍ່ໄປນີ້:

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. ໃນຮູບແບບຂອງທ່ານ, ສ້າງ checkboxes ສໍາລັບແຕ່ລະທາງເລືອກທີ່ທ່ານຕ້ອງການທີ່ຈະຊ່ວຍປະຢັດ. ຕົວ​ຢ່າງ :

<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 array ເມື່ອທ່ານດຶງບັນທຶກຈາກຖານຂໍ້ມູນ.

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

ລະຫັດຕົວຢ່າງເພື່ອເກັບຄ່າ checkbox ຫຼາຍໃນ Laravel

ນີ້ແມ່ນບາງລະຫັດຕົວຢ່າງສໍາລັບການເກັບຮັກສາຄ່າຂອງຫຼາຍ checkboxes ໃນຖານຂໍ້ມູນໃນ Laravel:

ໃຊ້ຊ່ອງຂໍ້ມູນປະເພດ "boolean".

ການສ້າງຄໍລໍາ boolean "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();

ໃຊ້ຕາຕະລາງຄວາມສໍາພັນ

ການສ້າງຕາຕະລາງ "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" ຂອງປະເພດຕາຕະລາງໃນຕາຕະລາງ "poll" (ຖ້າທ່ານໃຊ້ 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();

ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າ, ໃນກໍລະນີໃດກໍ່ຕາມ, ທ່ານຈະຕ້ອງຮັບປະກັນວ່າຄ່າ checkbox ຂອງທ່ານຖືກກວດສອບຢ່າງຖືກຕ້ອງແລະເຮັດຄວາມສະອາດກ່ອນທີ່ຈະຖືກບັນທຶກໄວ້ໃນຖານຂໍ້ມູນຂອງທ່ານ. ທ່ານສາມາດນໍາໃຊ້ຕົວຄວບຄຸມການກວດສອບຄວາມຖືກຕ້ອງຂອງ Laravel ແລະຕົວກອງຂໍ້ມູນສໍາລັບການນີ້.

[ລວມ: 1 ຫມາຍຄວາມວ່າ: 5]

ຂຽນ​ໂດຍ Anton Gildebrand

Anton ແມ່ນນັກພັດທະນາ stack ເຕັມທີ່ກະຕືລືລົ້ນໃນການແບ່ງປັນຄໍາແນະນໍາແລະການແກ້ໄຂລະຫັດກັບເພື່ອນຮ່ວມງານແລະຊຸມຊົນນັກພັດທະນາຂອງລາວ. ດ້ວຍພື້ນຖານທີ່ແຂງແຮງໃນເຕັກໂນໂລຢີດ້ານຫນ້າແລະດ້ານຫລັງ, Anton ມີຄວາມຊໍານານໃນພາສາການຂຽນໂປຼແກຼມແລະກອບວຽກທີ່ຫລາກຫລາຍ. ລາວເປັນສະມາຊິກທີ່ຫ້າວຫັນຂອງເວທີຜູ້ພັດທະນາອອນໄລນ໌ແລະປະກອບສ່ວນຢ່າງເປັນປົກກະຕິກ່ຽວກັບແນວຄວາມຄິດແລະວິທີແກ້ໄຂເພື່ອຊ່ວຍໃຫ້ຜູ້ອື່ນແກ້ໄຂບັນຫາທ້າທາຍການຂຽນໂປຼແກຼມ. ໃນເວລາຫວ່າງຂອງລາວ, Anton ເພີດເພີນກັບການອັບເດດແນວໂນ້ມ ແລະເທັກໂນໂລຍີລ່າສຸດໃນພາກສະໜາມ ແລະທົດລອງໃຊ້ເຄື່ອງມື ແລະກອບວຽກໃໝ່ໆ.

ອອກຄໍາເຫັນເປັນ

ທີ່ຢູ່ອີເມວຂອງທ່ານຈະບໍ່ຖືກເຜີຍແຜ່. ທົ່ງນາທີ່ກໍານົດໄວ້ແມ່ນຫມາຍ *

ທ່ານຄິດແນວໃດ?

387 ຈຸດ
Upvote Downvote