0
I am on a registration screen where there is a combobox of State and Cities.
City has q be filled after the state is selected.
I have create.blade.php
<div class="form-group">
{!! Form::label('estado', 'Estado:') !!}
{!! Form::select('estado', $estados) !!}
</div>
<div class="form-group">
{!! Form::label('cidade', 'Cidade:') !!}
{!! Form::select('cidade', []) !!}
</div>
<script type="text/javascript">
$('select[name=estado]').change(function () {
var id_estado = $(this).val();
// $('select[name=cidade]').html('').append('<option value=""> Carregando... </option>');
$.get('/cidades/' + id_estado, function (cidades) {
$('select[name=cidade]').empty();
$.each(cidades, function (key, value) {
$('select[name=cidade]').append('<option value=' + value.id_cidade + '>' + value.nome + '</option>');
});
});
});
</script>
And the controller:
class CidadeController extends Controller
{
private $estadoModel;
public function __construct(Estado $estado)
{
$this->estadoModel = $estado;
}
public function index()
{
$estados = $this->estadoModel->lists('nome', 'id_estado');
return view('contas.create', compact('estados'));
}
public function getCidades($id_estado)
{
$estado = $this->estadoModel->find($id_estado);
$cidades = $estado->cidades()->getQuery()->get(['id_estado', 'nome']);
return Response::json($cidades);
}
But using the debugging of the Variable is doing the wrong query:
select * from `estados` where `estados`.`id_estado` = '3' limit 1
select `id_estado`, `nome` from `cidades` where `cidades`.`id_cidade` = '3' and `cidades`.`id_cidade` is not null
Can someone help me because you’re making the wrong appointment?
Add your States and Cities Model please, because I believe it is a problem in the relationship, otherwise inform the version of Laravel that you are using.
– Patrick Maciel