in ,

Como armazenar vários valores de Checkbox em um banco de dados no Laravel?

Preciso armazenar valores de checkbox em banco de dados no Laravel. Como fazer ?

Como armazenar vários valores de Checkbox em um banco de dados no Laravel?
Como armazenar vários valores de Checkbox em um banco de dados no Laravel?

Existem várias maneiras de armazenar os valores de vários checkboxes em um banco de dados no Laravel. Aqui estão algumas opções:

  1. Use um campo do tipo “booleano” : cada caixa de seleção pode ser salva como "verdadeiro" ou "falso" em um campo do tipo booleano em seu banco de dados.
  2. Use um campo do tipo “texto” : você pode armazenar os valores de todas as caixas de seleção marcadas em um campo do tipo texto, separando cada valor com uma vírgula. Por exemplo, se o usuário marcou as caixas "frutas" e "legumes", você pode salvar essas informações como "frutas,vegetais" em um campo do tipo texto.
  3. Use uma tabela de relacionamento : se você tiver várias caixas de seleção vinculadas ao mesmo registro, poderá usar uma tabela de relação para armazenar esses dados. Por exemplo, se você tiver uma tabela "products" com uma coluna "categories", poderá criar uma tabela "product_categories" que vincule as categorias selecionadas a cada produto.
  4. Use um campo do tipo “tabela” : Se você estiver usando um banco de dados que suporta arrays (como o PostgreSQL), você pode armazenar os valores de várias caixas de seleção em um campo do tipo array. Isso permitirá que você armazene vários valores em um único campo sem precisar usar uma tabela de relacionamento.

Armazene vários valores de caixa de seleção em um banco de dados usando uma matriz

No Laravel, você pode armazenar vários valores de checkbox em um banco de dados usando um array para armazenar os valores em um único campo. Aqui está um exemplo de como você pode fazer isso:

1. Crie uma migração para adicionar um campo à sua tabela de banco de dados para armazenar valores de caixa de seleção. Por exemplo, se você deseja armazenar os valores em um campo chamado "opções", você pode usar a seguinte migração:

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. Em seu formulário, crie caixas de seleção para cada opção que deseja salvar. Por exemplo :

<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. Em sua lógica de processamento de envio de formulário, recupere os valores dos checkboxes selecionados e armazene-os no banco de dados. Por exemplo :

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

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

Isso armazena os valores das caixas de seleção selecionadas no campo "opções" como uma matriz codificada em JSON. Você pode recuperar e exibir os valores selecionados decodificando a matriz JSON ao recuperar o registro do banco de dados.

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

Códigos de amostra para armazenar vários valores de caixa de seleção no Laravel

Aqui estão alguns exemplos de códigos para armazenar os valores de vários checkboxes em um banco de dados no Laravel:

Use um campo do tipo “booleano”

Criação da coluna booleana “subscription_newsletter” na tabela “users”:

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

Registo da subscrição do utilizador à newsletter aquando da submissão do formulário:

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

Use um campo do tipo “texto”

Criação da coluna "options_sélectionées" do tipo texto na tabela "survey":

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

Salvando as opções selecionadas pelo usuário ao enviar o formulário:

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

Use uma tabela de relacionamento

Criação da tabela "categories_products" com as colunas "id_product" e "id_category":

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

Salvando as categorias selecionadas pelo usuário ao enviar o formulário:

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

Use um campo do tipo “tabela”

Criação da coluna "options_selected" do tipo tabela na tabela "poll" (caso utilize PostgreSQL):

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

Salvando as opções selecionadas pelo usuário ao enviar o formulário:

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

É importante observar que, em qualquer caso, você precisará garantir que os valores de sua caixa de seleção sejam devidamente validados e limpos antes de serem salvos em seu banco de dados. Você pode usar os controladores de validação e filtros de dados do Laravel para isso.

[Total: 1 média: 5]

Escrito por Anton Gildebrand

Anton é um desenvolvedor full stack apaixonado por compartilhar dicas e soluções de código com seus colegas e a comunidade de desenvolvedores. Com sólida experiência em tecnologias front-end e back-end, Anton é proficiente em uma variedade de linguagens e estruturas de programação. Ele é um membro ativo de fóruns de desenvolvedores on-line e contribui regularmente com ideias e soluções para ajudar outras pessoas a resolver desafios de programação. Em seu tempo livre, Anton gosta de se manter atualizado sobre as últimas tendências e tecnologias da área e experimentar novas ferramentas e estruturas.

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios estão marcados com *

O que você acha?

387 Points
Upvote Downvote