MAD Lab
/
Tutor > Campos ligados a banco > Radio e checkbox (DB)

Radio e checkbox (DB)

Campos ligados a banco

mad-dbradio-field mad-dbcheckbox-group-field mad-dbsort-list-field mad-dbselect-check-field mad-dbchecklist-field
Radio (DB)

mad-dbradio-field carrega as opções direto de TutorDemoEstadoPedido (auto-query Eloquent), inline.

Estado do pedido

resources/views/tutor/examples/db-radio-check/dbradio.blade.php
<mad-dbradio-field name="estado_radio_id" label="Estado do pedido"
    model="TutorDemoEstadoPedido" database="business"
    display="{nome}" order-by="ordem" inline />
Checkbox group (DB, CSV)

mad-dbcheckbox-group-field em mode=&quot;comma&quot; (default) — salva os ids marcados como CSV numa coluna do registro pai.

Categorias de interesse

resources/views/tutor/examples/db-radio-check/dbcheckbox-group.blade.php
<mad-dbcheckbox-group-field name="categorias_csv" label="Categorias de interesse"
    model="TutorDemoCategoria" database="business"
    display="{nome}" order-by="nome" layout="vertical" />
Lista ordenável (DB)

mad-dbsort-list-field carrega as categorias do banco e permite reordenar por drag-and-drop.

Ordem de prioridade das categorias
Alimentos
Brinquedos
Eletrônicos
Ferramentas
Livros
Móveis
Papelaria
Vestuário

resources/views/tutor/examples/db-radio-check/dbsort-list.blade.php
<mad-dbsort-list-field name="categorias_ordem" label="Ordem de prioridade das categorias"
    model="TutorDemoCategoria" database="business"
    display="{nome}" order-by="nome" orientation="vertical" />
Multi compacto +X (DB)

mad-dbselect-check-field mostra checkboxes num dropdown compacto, com contagem +X itens além do max-display.

resources/views/tutor/examples/db-radio-check/dbselect-check.blade.php
<mad-dbselect-check-field name="categorias_compactas" label="Categorias (compacto)"
    model="TutorDemoCategoria" database="business"
    display="{nome}" order-by="nome" max-display="3" mode="comma" />
Checklist com colunas (DB)

mad-dbchecklist-field lista os clientes com colunas customizadas — filhos são sempre &lt;mad-col&gt;, nunca &lt;mad-checklist-col&gt;.

Clientes selecionados
Nome Cidade UF

resources/views/tutor/examples/db-radio-check/dbchecklist.blade.php
<mad-dbchecklist-field name="clientes_checklist" label="Clientes selecionados"
    model="TutorDemoCliente" database="business"
    display="{nome}" order-by="nome" height="320px">
    <mad-col field="nome" label="Nome" />
    <mad-col field="cidade" label="Cidade" />
    <mad-col field="uf" label="UF" width="60px" center />
</mad-dbchecklist-field>
mode=&quot;table&quot; sem fixture de pivot
mad-dbcheckbox-group-field, mad-dbselect-check-field e mad-dbmulti-search-field (página "Busca") também aceitam mode="table" — persistência 1:N via pivot-model + foreign-key + item-key, resolvida automaticamente por form->save($parent). As fixtures compartilhadas do MAD Lab (TutorDemoCliente, TutorDemoCategoria, TutorDemoPedido, TutorDemoPedidoItem) não incluem nenhuma tabela pivot N:N, e criar uma está fora do escopo deste lote (models/seed compartilhados são somente leitura). Por isso os exemplos acima ficam em mode="comma", que funciona com as tabelas existentes.
Código-fonte completo da página
app/control/Tutor/TutorDbRadioCheck.php
<?php

namespace App\Control\Tutor;

use App\Support\Tutor\TutorPage;

class TutorDbRadioCheck extends TutorPage
{
    protected string $catalogKey = 'db_radio_check';
}
resources/views/tutor/db/radio-check.blade.php
<x-tutor-page page="db_radio_check">
    <x-tutor-demo demo="tutor.examples.db-radio-check.dbradio"
        title="Radio (DB)" desc="mad-dbradio-field carrega as opções direto de TutorDemoEstadoPedido (auto-query Eloquent), inline." />

    <x-tutor-demo demo="tutor.examples.db-radio-check.dbcheckbox-group"
        title="Checkbox group (DB, CSV)" desc="mad-dbcheckbox-group-field em mode=&quot;comma&quot; (default) — salva os ids marcados como CSV numa coluna do registro pai." />

    <x-tutor-demo demo="tutor.examples.db-radio-check.dbsort-list"
        title="Lista ordenável (DB)" desc="mad-dbsort-list-field carrega as categorias do banco e permite reordenar por drag-and-drop." />

    <x-tutor-demo demo="tutor.examples.db-radio-check.dbselect-check"
        title="Multi compacto +X (DB)" desc="mad-dbselect-check-field mostra checkboxes num dropdown compacto, com contagem +X itens além do max-display." />

    <x-tutor-demo demo="tutor.examples.db-radio-check.dbchecklist"
        title="Checklist com colunas (DB)" desc="mad-dbchecklist-field lista os clientes com colunas customizadas — filhos são sempre &lt;mad-col&gt;, nunca &lt;mad-checklist-col&gt;." />

    <mad-callout type="warning" title="mode=&quot;table&quot; sem fixture de pivot" icon="triangle-alert">
        <code>mad-dbcheckbox-group-field</code>, <code>mad-dbselect-check-field</code> e
        <code>mad-dbmulti-search-field</code> (página "Busca") também aceitam
        <code>mode="table"</code> — persistência 1:N via <code>pivot-model</code> +
        <code>foreign-key</code> + <code>item-key</code>, resolvida automaticamente por
        <code>form-&gt;save($parent)</code>. As fixtures compartilhadas do MAD Lab
        (<code>TutorDemoCliente</code>, <code>TutorDemoCategoria</code>, <code>TutorDemoPedido</code>,
        <code>TutorDemoPedidoItem</code>) não incluem nenhuma tabela pivot N:N, e criar uma está fora
        do escopo deste lote (models/seed compartilhados são somente leitura). Por isso os exemplos
        acima ficam em <code>mode="comma"</code>, que funciona com as tabelas existentes.
    </mad-callout>
</x-tutor-page>