Mayroong ilang mga paraan upang maiimbak ang mga halaga ng maraming mga checkbox sa isang database sa Laravel. Narito ang ilang mga opsyon:
- 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.
- 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.
- 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.
- 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.
Talaan ng mga Nilalaman
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.