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?
Ele passa pelo for e grava apenas um row, eu quero q ele grave varias rows na tabela conforme a quantidade de checkbox marcados!
D
Dragoon
$data_id = 1; é um inteiro
ai você fez um for $frequencia->data_id = $data_id[$i];
ou seja, ai te um erro
M
murillo_smit
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!
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 ???
M
murillo_smit
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.
D
Dragoon
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
M
murillo_smit
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?
D
Dragoon
Se o checkbox é referente ao aluno, porque você colocou 1 em vez do código do aluno? acho que estamos chegando lá!
M
murillo_smit
To entendendo, mais depois como vou identificar que o aluno ta presente ou faltou? e depois calcular a quantidade de faltas?
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
M
murillo_smit
Entendi, realmente é a melhor logica… mais o problema continua ta gravando só um registro!
D
Dragoon1 like
Não tenho como debugar daqui, faça assim:
return$value=$request->get('value');
verifica o que retornar linha a linha !!!
M
murillo_smit
return$value=$request->get('value');
retorno:
["3","4"]
no caso eu selecionei dois item no checkbox
D
Dragoon
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);?
M
murillo_smit
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?
D
Dragoon
sabe esse teste: return $value = $request->get(‘value’);
então já alterou isso pra isso: $count = count($aluno_id);
M
murillo_smit
sim já alterei:
$data_id=$id->id;$value=$request->get('value');$aluno_id=$request->get('aluno_id');$user_id=auth()->user()->id;$count=count($aluno_id);//if($count>0){for($i=0;$i<$count;$i++){$frequencia->user_id=$$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();}}
D
Dragoon
$frequencia deveria ser $frequencia = new Frequencia() o problema agora é POO que é a primeira linha do for
M
murillo_smit
eu to ejetando ela dentro da function assim:
public function frequencias_store(Request $request, Frequencia $frequencia){}
$count=count($aluno_id);if($count>0){for($i=0;$i<$count;$i++){$frequencia=newFrequencia();//Coloquei aki$frequencia->user_id=$$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();}}echo'gravou';
cara sério se precisa dar debug no seu código é um alerta, $frequencia->user_id = $$user_id; isso não existe não deveria ser $frequencia->user_id = $user_id;?
Verifique a linha 40!
M
Solucao aceita
murillo_smit1 like
valeu brother!
estava errado a variavel $$user_id, corrigi para: $frequencia->user_id = $user_id;e gravou no banco tudo certinho. muito obrigado mesmo, me ajudou muito! parabéns.