Inserir multiplo row na tabela com array()

Estou com a seguinte dificuldade para inserir no banco 4 array segue a estrutura para melhor entendimento.

$data_id = 1;
$value = $request->get('value');
$aluno_id = $request->get('user_id');
$count = count($value);

if ($count > 0) 
{
	for ($i = 0; $i < $count; $i++) {
		$frequencia->user_id = auth()->user()->id;
		$frequencia->aluno_id = $aluno_id[$i];
		$frequencia->data_id = $data_id[$i];
		$frequencia->value = $value[$i];
		$frequencia->save();
	}
}

echo 'gravou';

sendo que $value é um array que vem do checkbox marcado no form, eu quero inserir no banco os dados marcados na checkbox com form a quantidade, alguém pode me ajudar?

Qual é o seu formulário?
De cara já vi um erro de programação, esse código não tem um debug com erros?

Esse é o formulario:

{!! Form::open(['route'=>['admin.boletim.frequencias.store']]) !!}
<div class="modal-body">
	<div class="row">
		<div class="form-group">
			<div class="col-md-6">
				<label for="">Data</label>
				<input type="date" class="form-control" name="data">
			</div>
		</div>
	</div>
	<div class="row">
		<div class="form-group">
			<div class="col-md-12">
				<label for="">Descrição</label>
				<textarea class="form-control" name="desc"
						  style="height: 70px;">

			</textarea>
			</div>
		</div>
	</div>
	<br>
	<div class="row">
		<div class="form-group">
			<div class="col-md-12">
				<table class="table table-bordered">
					<tbody>
					<tr>
						<th>Nome aluno</th>
						<th style="width: 50px">Presente</th>
					</tr>
					@forelse($users as $us)
						<tr>
							<td>{{$us->user->name}}</td>
							<input type="hidden" name="aluno_id[]"
								   value="{{$us->user->id}}">
							<td>
								<input type="checkbox" name="value[]" value="1">
							</td>
						</tr>
					@empty
						<td colspan="2">
							<span>Nenhum aluno matriculado!</span>
						</td>
					@endforelse

					</tbody>
				</table>
			</div>
		</div>
	</div>
</div>
<div class="modal-footer">
	<button type="button" class="btn btn-default pull-left"
			data-dismiss="modal">Fechar
	</button>
	<button type="submit" class="btn btn-primary">Salvar</button>
</div>
{!! Form::close() !!}

Qual erro você identificou?

Ele passa pelo for e grava apenas um row, eu quero q ele grave varias rows na tabela conforme a quantidade de checkbox marcados!

$data_id = 1; é um inteiro

ai você fez um for $frequencia->data_id = $data_id[$i];

ou seja, ai te um erro

Realmente tava retornando um erro, eu arrumei e agora está gravando no banco apenas um registro! sendo que marco vários checkbox, era pra gravar varias rows certo!

$data_id = $id->id;
$value = $request->get('value');
$aluno_id = $request->get('user_id');


$count = count($value);
//
if ($count > 0) {
    for ($i = 0; $i < $count; $i++) {
        $frequencia->user_id = auth()->user()->id;
        $frequencia->aluno_id = $aluno_id[$i];
        $frequencia->data_id = $data_id;
        $frequencia->value = $value[$i];
        $frequencia->save();
    }
}

echo 'gravou';

A ideia é certa, mas, o código diz outra coisa:

Código HTML:

<input type="checkbox" name="value[]" value="1">

Quando você manda esse item com o mesmo value ele considera apenas um valor, então no lugar de value="1" você precisa iterar outros valores.

Esse value faz referencia a quem ???

eu to fazendo assim, se o checkbox for marcado ele retorna o valor 1 certo? na tabela a coluna value ta default com o valor 0, então através desses valores eu identifico se for 0 = false e se for 1 = true.

eu to fazendo assim, se o checkbox for marcado ele retorna o valor 1 certo

Sim, mas, veja esse checkbox vai indentificar quem? me responde, eu já sei o problema, mas, você vai aprender o que ta errando

Esse checkbox vai identificar a presença de um aluno, se for = 0 vai ser igual a faltou, se for = 1 está presente. Entendeu brother?

Se o checkbox é referente ao aluno, porque você colocou 1 em vez do código do aluno? acho que estamos chegando lá!

To entendendo, mais depois como vou identificar que o aluno ta presente ou faltou? e depois calcular a quantidade de faltas?

HTML:

<input type="checkbox" name="value[]" value="{{$us->user->id}}">

Código:

if ($count > 0) {
    for ($i = 0; $i < $count; $i++) {
        $frequencia->user_id = auth()->user()->id;
        $frequencia->aluno_id = $aluno_id[$i];
        $frequencia->data_id = $data_id;

        // busca se o id existe
        $frequencia->value = in_array($aluno_id[$i], $value) ? 1 : 0; 

        $frequencia->save();
    }
}

Se não encontrar o id o usuário que está inserido é 0 se encontrar é 1, a lógica melhor é essa

Entendi, realmente é a melhor logica… mais o problema continua ta gravando só um registro!

Não tenho como debugar daqui, faça assim:

return $value = $request->get('value'); 

verifica o que retornar linha a linha !!!

1 curtida
return $value = $request->get('value');

retorno:

["3","4"]

no caso eu selecionei dois item no checkbox

o código $count = count($value); está errado também, porque você deve contar as linhas pelo $aluno_id !

não deveria ser $count = count($aluno_id);?

Alterei para
$count = count($aluno_id);
mais ainda continua gravando apenas um registro, sendo q eu marcos varios no checkbox, uma pergunta o valor default da coluna value eu posso remover ne?

sabe esse teste: return $value = $request->get(‘value’);

é para você fazer em todos e passar aqui!

$data_id = $id->id;
$value = $request->get('value');
$aluno_id = $request->get('user_id');

outro erro na tela html tá aluno_id no código tá user_id, verifique isso