2017-07-14 7 views
0

Ich habe zwei Tabelle "Patient" und "Buchung" -Tabelle, und es gibt eine Beziehung "Eins zu Viele" zwischen ihnen, ich möchte ein Suchformular in einer index_booking Seite einrichten, wo ein Benutzer kann einen Patientenname eingeben und automatisch vervollständigen alle Patientenname aus Patiententabelle nach WHERE Bedingung.Autocomplete Kein Ergebnis gefunden in Laravel

Dies ist Buchung Modell

class Booking extends Eloquent 
{ 

    public function patient() 
    { 
     return $this->belongsTo('App\Patient'); 
    } 

    public function user() 
    { 
     return $this->belongsTo('App\User'); 

    } 
} 

Dieses

Patient Modell ist
class Patient extends Eloquent 
{ 
    public function booking() 
    { 
     return $this->hasMany('App\Booking'); 
    } 

    public function user() 
    { 
     return $this->belongsTo('App\User'); 

    } 
} 

und ich diesen Code in Index-Seite der Buchung

{!! Form::text('search_text', null, array('placeholder' => 'Search Text','class' => 'form-control','id'=>'search_text')) !!} 

i in Booking-Controller diesen Code verwendet Autocomplete zu machen, um Daten von Patiententabelle zu zeigen:

public function autoComplete(Request $request) 
{ 
    $patients = Patient::where('company_id', Auth::user()->company_id) 
     ->where('patient_name', 'like', "&{$request->get('term')}&") 
     ->get(); 

    if ($patients->isEmpty()) { 
     return ['value' => 'No Result Found', 'id' => '']; 
    } 

    return $patients->map(function ($patient) { 
     return [ 
      'id' => $patient->id, 
      'value' => $patient->patient_name, 
     ]; 
    }); 
} 

Und das ist Strecke

Route::get('autocomplete',array('as'=>'autocomplete','uses'=>'[email protected]')); 
Route::get('searchajax',array('as'=>'searchajax','uses'=>'[email protected]')); 

Javascript-Code ist

<script > 
$(document).ready(function() { 
    src = "{{ route('searchajax') }}"; 
    $("#search_text").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: src, 
       dataType: "json", 
       data: { 
        term : request.term 
       }, 
       success: function(data) { 
        response(data); 

       } 
      }); 
     }, 
     minLength: 3, 

    }); 
}); 

</script> 

, wenn ich in das Suchfeld alle Patientennamen eingeben erhielt ich eine Nachricht Keine Ergebnisse

gefunden

dies Der Prüfer in der Buchungssteuerung:

public function store(Request $request) 
    { 
     //Validate Data 
     $this->validate($request, [ 
       'patient_id'=> 'required|integer',    
       'booking_date'=> 'required|max:255', 
       'tybe'=> 'required', 
       'value'=>'required', 
       'doctor_name', 
       'patient_history', 
       'pharma', 
       'complaint', 
       'diagnosis', 
       'recomind', 
       'prescription', 
       'notes', 
       'document', 
       'by', 



      ]); 

       //Insert Data to Database 
       $booking = new Booking; 

       $booking->patient_id = $request->patient_id; 
       $booking->booking_date = $request->booking_date; 
       $booking->tybe = $request->tybe; 
       $booking->value = $request->value; 
       $booking->doctor_name = $request->doctor_name; 
       $booking->patient_history = $request->patient_history; 
       $booking->pharma = $request->pharma; 
       $booking->complaint = $request->complaint; 
       $booking->diagnosis = $request->diagnosis; 
       $booking->recomind = $request->recomind; 
       $booking->prescription = $request->prescription; 
       $booking->notes = $request->notes; 
       $booking->document = $request->document; 
       $booking->by = $request->by; 

       $booking->save(); 



       //to save multi selection Tags ,dont foget to add [] after -> tags in create post page then write this code here 
       //$post->tags()->sync($request->tags, false); 

       //Show Flash Message 

       Session::flash('success','تم حفظ البياانات'); 

       //Redirect to another Page 

       return redirect()->route('booking.index'); 
    } 
+1

Wilcards für SQL LIKE-Operator sind Prozentzeichen, nicht kaufmännisch. –

+0

könnten Sie es bitte erklären? –

+0

Ihre '-> where ('patient_name', 'like', '& {$ anfrage-> get (' term ')} &") 'Linie erzeugt SQL-Abfrage mit' WHERE Patientenname LIKE' & etwas & ''und es sollte sein 'WHERE geduldiger_name LIKE '% something%'' –

Antwort

0

SQL Syntax für mit LIKE Operator passend ist:

WHERE `column` LIKE '%needle%' 

Ihr Code, auf der anderen Seite erzeugt die folgende:

WHERE `column` LIKE '&needle&' 

, die praktisch die gleiche ist, wie wenn Sie eingegeben haben:

WHERE `column` = '&needle&' 

Also, was Sie tun müssen, ist & Witz ersetzen h % in der folgenden Zeile:

->where('patient_name', 'like', "&{$request->get('term')}&") 
+0

Ich akzeptiere Ihre Antwort, aber ich kann es nicht upvote, weil ich nicht genug Ruf, danke wieder :) –

+0

Kein Problem, danke für die Annahme! –

+0

Sorry @Robo Robok, aber wenn ich das Formular abschicke, erhalte ich eine Fehlermeldung: Das Feld für die Patienten-ID ist erforderlich. !! –

Verwandte Themen