Método for não funciona no controller usando Laravel
10 respostasResolvido
laravelphp
C
Cassiozumbi
Bom, estou com uma dificuldade, o método for não funciona dentro do meu controller… segue o código a baixo.
publicfunctionstore(Request$request){$validator=$this->validarProduto($request);if($validator->fails()){returnredirect()->back()->withErrors($validator->errors());}$dados=['descricao'=>$request->descricao,'insumo_id'=>$request->insumo_id,'quantidade'=>$request->quantidade,];for($i=0;$i<count($dados['insumo_id']);$i++){$produto=Produto::create($dados);$produto=Produto::find($produto->id);$produto->insumos()->attach($dados['insumo_id'],['quantidade'=>$dados['quantidade'][$i]]);}$redirect=redirect()->route('produto.index');return$redirect->with('success','produto adicionado com sucesso!!!');}
Primeiro não funciona porque aparece algum erro?
Segundo o $dados['insumo_id'] é um array?
Para ter uma resposta precisa dos modelos, da View também .
C
Cassiozumbi
$dados[‘insumo_id’ é um array, o loop não incrementa.
C
Cassiozumbi
Vou postar aqui como tá o meu projeto.
C
Cassiozumbi
public function store(Request $request){
$validator=$this->validarProduto($request);if($validator->fails()){returnredirect()->back()->withErrors($validator->errors());}$dados=['descricao'=>$request->descricao,'insumo_id'=>$request->insumo_id,'quantidade'=>$request->quantidade,];for($i=0;$i<count($dados['insumo_id']);$i++){$produto=Produto::create($dados);$produto=Produto::find($produto->id);$produto->insumos()->attach($dados['insumo_id'],['quantidade'=>$dados['quantidade'][$i]]);}$redirect=redirect()->route('produto.index');return$redirect->with('success','produto adicionado com sucesso!!!');}
C
Cassiozumbi
identartextopre-formatadoem1espaços<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
use App\Model\Insumo;
class Produto extends Model
{
protected $fillable = [
</div><divclass="box-body"><divclass="col-lg-4 col-xs-12">@foreach($errors->all()as$error)<divclass="callout callout-danger">{{$error}}</div>@endforeach<formaction=""method="POST"id="form_prepare"><fieldset><divclass="form-group"><labelfor="descircao">Descrição</label><inputtype="text"name="descricao"id="descricao"placeholder="Insira a descrição do produto"class="form-control"required></div><divclass="form-group"><labelfor="insumo_id[]">Insumo</label><selectclass="form-control"name="insumo_id[]"required><optionvalue="">--Selecioneuminsumo--</option>@foreach($insumosas$insumo)<optionvalue="{{$insumo->id}}">{{$insumo->descricao}}</option>@endforeach</select></div><divclass="form-group"><labelfor="quantidade">Quantidade</label><inputtype="number"name="quantidade[]"id="quantidade[]"placeholder="Insira a quantidade desejada"class="form-control"required></div><hr><divclass="form-group"><buttontype="submit"class="btn btn-primary">Adicionar</button></fieldset></form><hr>