Вот мои текущие настройки:
Маршруты:
Route::post('/pedidos/create/{id}',[ClienteController::class, 'getContato']);
Route::get('/pedidos/create',[ClienteController::class, 'getCliente']);
Контроллеры:
В Pedido Controller.php:
public function create() {
$query = DB::select("SELECT * FROM `clientes` WHERE deleted_at IS null");
$clientes = collect($query)->toArray();
$query = DB::select("SELECT contatos.nome, contatos.id FROM `contatos` INNER JOIN `clientes` ON clientes.id = contatos.clientes_id AND contatos.deleted_at IS null;");
$contatos = collect($query)->toArray();
return view('pedidos.create', ['clientes'=>$clientes], ['contatos'=>$contatos]);
}
В клиентском контроллере:public function getCliente() {
$data['clientes'] = Cliente::get(["nome", "id"]);
return view('pedidos.create', compact($data));
}
public function getContato($id) {
$contatos = DB::table("contatos")
->where("cliente_id",$id)
->pluck("nome","id");
return response()->json($contatos);
}
public function store(Request $request) {
$pedido = new Pedido();
$pedido->cliente_id = $request->cliente_id;
$pedido->contato_id = $request->contato_id;
$pedido->save();
return redirect('/pedido')->with('success','Pedido criado');
}
И, наконец, мой pedido/create.blade.php:
@extends('layouts.app')
@section('content')
@csrf
Cadastrar pedidos
@if($errors->any)
- @foreach($errors->all() as $error)
- {{ $error }}
@endforeach
Cliente:
Select cliente
@foreach ($clientes as $data)
{{$data->nome}}
@endforeach
Contato:
Cadastrar
Voltar
@endsection
$(document).ready(function(){
$('#cliente_id').on('change', function () {
var idCliente = this.value;
$("#contato_id").html('');
$.ajax({
url: '{{url("cliente/fetchContato")}}'+idCliente,
type: "POST",
data: { cliente_id: idCliente},
success: function (result) {
alert()
$('#contato_id').html('Select contato');
$.each(result.contatos, function (key, value) {
$("#contato_id").append('' + value.name + '');
});
}
});
});
});
Подробнее здесь: https://stackoverflow.com/questions/783 ... 0-and-ajax