J'ai eu un problème pour afficher la liste déroulante dépendante. Ça va chercher l'hôpital, mais pour la spécialité, ça me donne un tableau vide sans erreur comme cette image:

enter image description here

Je n'ai pas pu trouver où est mon erreur, il n'a rien montré comme cette image:

enter image description here

Voici ma route:

// Hospital
Route::get('hospital', 'ApiController@getHospital');
// Speciality
Route::get('speciality', 'ApiController@getSpeciality');

Mon contrôleur:

// Speciality
public function getSpeciality(Request $request)
{
    $hosId = $request->input('hospital_id');
    
    $data = DB::table('tr_hospital_specialists as tr')
        ->select('tr.id','hospital_id','specialist_id','specialist_name')
        ->join('mst_specialists as sp', 'tr.specialist_id', '=', 'sp.id')
        ->join('mst_hospitals as hos', 'tr.hospital_id', '=', 'hos.id')
        ->where('hospital_id', $hosId)
        ->orderBy('specialist_name','asc')
        ->get();

    if ($data) {
        return response()->json([
            'success' => true,
            'message' =>'success',
            'data'    => $data
        ], 200);
    } else {
        return response()->json([
            'success' => false,
            'message' => 'Data not found.',
        ], 400);
    }
}

Mon avis:

<div class="form-row">
    <div class="form-group col-md-6">
        <label class="text-white">Hospital</label>
        <model-list-select :list="hospital"
            v-model="optHospital"
            @change="getSpeciality"
            option-value="id"
            option-text="hospital_name"
            placeholder="Choose Hospital">
        </model-list-select>
    </div>
    <div class="form-group col-md-6">
        <label class="text-white">Speciality</label>
        <model-list-select :list="speciality"
            v-model="optSpeciality"
            option-value="specialist_id"
            option-text="specialist_name"
            placeholder="Choose Speciality">
        </model-list-select>
    </div>
</div>

Et voici mon script:

enter image description here

Merci.

0
Fenz 26 août 2020 à 08:22

2 réponses

Meilleure réponse

Modifiez votre manette $hosId = $request->input('hospital_id'); en $hosId = $request->hospital');

// Speciality
public function getSpeciality(Request $request)
{
    $hosId = $request->hospital;  // as u r sending  hospital key from axios
    
    $data = DB::table('tr_hospital_specialists as tr')
        ->select('tr.id','hospital_id','specialist_id','specialist_name')
        ->join('mst_specialists as sp', 'tr.specialist_id', '=', 'sp.id')
        ->join('mst_hospitals as hos', 'tr.hospital_id', '=', 'hos.id')
        ->where('hos.hospital_id', $hosId)
        ->orderBy('sp.specialist_name','asc')
        ->get();

    if ($data) {
        return response()->json([
            'success' => true,
            'message' =>'success',
            'data'    => $data
        ], 200);
    } else {
        return response()->json([
            'success' => false,
            'message' => 'Data not found.',
        ], 400);
    }
}

Et d'axios vous devez envoyer

axios.get('...',{params:{hospital:this.optHospital}}) // as optHospital is selected array
1
Kamlesh Paul 27 août 2020 à 08:31

Tout d'abord, vous devez récupérer les spécialités par hospital_id, et la deuxième chose: que se passe-t-il si votre réponse de spécialité est captée avant la réponse de l'hôte? Vous devez lier la demande de spécialité à l'option sélectionnée par l'hôpital.

1
Vahan Garnikyan 26 août 2020 à 08:39