2016-09-21 5 views
0

Ich werde gerne Query Builder verwenden, um die E-Mail-Adresse von Benutzern aus der Datenbank zu erhalten und ihnen E-Mails zu senden, aber bisher bin ich seit Tagen auf diesem festgefahren.Laravel 5.2 Variable an Query Builder übergeben

public function postSearchAction (Request $ request) {

 $data = array(
      'service' => $request->get('service'), 
      'location' => $request->get('location'), 
      'allProviders' => $request->get('allProviders'), 
      'date' => $request->get('date'), 
      'optional_skills' => $request->get('optional_skills'), 
      'landmark_homepage' => $request->get('landmark_homepage'), 
      'name' => Auth::user()->name, 
      'userEmail' => Auth::user()->email, 
      'requesterMobile' => Auth::user()->phone_number 
     ); 




     $email = DB::table('users')->where('main_service', 'LIKE', '%'.$data['location'].'%') 
      ->where('city_service', 'LIKE', '%'.$data['location'].'%') 
      ->pluck('email'); 




     To send emails 

     \Mail::send('auth.emails.serviceProviders', $data, function($message) use ($data) 
     { 
       $message->to($email, 'oluyemi')->subject('Test'); 
     }); 


    } 

Jetzt habe ich versucht, dd ($ Mail) zu verwenden, aber die Methode zurückgegeben ein leeres Array. Ich denke, es ist erwähnenswert, dass ich einmal die Variable innerhalb des Abfrage-Generators auf den erwarteten Wert ändern, alles funktioniert gut.

Jemand sollte bitte helfen, weiß nicht, was ich falsch mache. Ich muss wirklich die Variablen verwenden.

Danke für Ihre Hilfe.

+0

Sind Sie sicher, $ data ['location'] 'hat einen Wert? Gibt es Fehler? –

+0

@timenomad danke für deine Antwort ..... ja, wenn ich dd mache ($ data ['location']) gibt es den Wert zurück. dd ($ email) gibt [] – yemiwebby

+0

$ email = DB :: table ('users') -> wo zurück ('main_service', 'LIKE', '%'. $ data ['service']. '%') -> wo ('city_service', 'LIKE', '%'. $ data ['location']. '%') -> zupfen ('email'); – yemiwebby

Antwort

0

Bitte zeigen Sie uns die rohe SQL-Abfrage, damit wir sehen können, was falsch ist.
Nach der $ E-Mail-Abfrage, setzen:

DB::enableQueryLog(); 
dd(DB::getQueryLog()); 

Es wird das letzte Element sein.

ODER

->toSql() hinzufügen statt ->pluck() und dd() es.

+0

Ich habe gerade versucht, diese $ email = DB :: Tabelle (' Benutzer ') -> wo (' main_service ',' LIKE ','% '. $ data [' Dienst '].'% ') -> where (' city_service ',' LIKE ','% '. $ data ['Standort']. '%') -> tosql(); dd ($ email) ;. Und habe "select * from' users 'wo' main_service' LIKE? Und 'city_service' LIKE?" – yemiwebby

+0

Beachten Sie, dass es sich um Sql (großgeschriebenes S) handelt. Können Sie die Ausgabe posten? –