Laravel选择框以显示名称并保存此名称的ID

时间:2017-06-02 16:09:48

标签: php laravel model-view-controller web laravel-5

我有问题。我想创建一个下拉框,其名称来自我的数据库中的表,并且只存储其他表中该名称的id(该id是外键)。我会告诉你我的代码

public function create()
{
  $estado = Estado::pluck('nome', 'id');
  return view('Backoffice.acoes.criar_acao', compact('estado'));
}

AcaoController @创建:

$data = Acao::create([
      'estado_id' => $data[estado_id],
    ]);
    return redirect()->back();
}

AcaoController @商店:

Fib

这种方式商店不起作用,我认为这段代码不适用于acao和estado之间的关系。

任何人都可以帮助我 谢谢

1 个答案:

答案 0 :(得分:0)

如果我得到它,你想在 Estado 模型中创建一个 Acao 模型。 首先,您使用的是尚未初始化的$data[estado_id]。 一个简单的解决方案是首先创建Acao对象,然后访问属性estado并创建一个新的Instance。然后使用eloquent:

保存模型
$acao = new \App\Acao([/*your data*/]); // even a create is good
$acao->save();                         // instead of save  
$acao->estado()->create(
    [/*estado data*/]
); 
$acao->save();

确定您要尝试将$data[estado_id]传递给create方法。

修改

查看

<select name="estado">
    @foreach($estdo in $estados)
        <option value="{{ $estado->id }}">{{$estado->nome}}</option>
    @endforeach
</select>

控制器

Acao::create([
   'estado_id' => $request->get('estado'),
]);

或者

$acao = new Acao;
$acao->estado_id = $request->get('estado');
$acao->save();