2016-08-01 38 views
0

Ich versuche, Daten aus der Datenbank abzurufen, aber ich bekomme keine richtigen Ergebnisse. Es sieht so aus, als ob meine "If" -Anweisungen nicht richtig funktionieren, da ich einige Daten von der "$ sale-> whereRaw" -Abfrage bekomme, die am Anfang von foreach steht. Was mache ich falsch?Abrufen von korrekten Daten aus der Datenbank mit Laravel Eloquent

Ich arbeite mit Laravel 4.2.

Controller:

 $matches = Match::where('PeopleID', '=', $id); 

     $sales = Sale::leftJoin('property', 'sales.property_id', '=', 'property.property_id') 
      ->where('Status', '=', 'ForSale'); 


     foreach($matches as $match) 
     { 
      $county = $match->county; 

      $sales->whereRaw("match (`county`) against (?)", array($county)); 

      if($match->tenureFh == '1') 
      { 
       $sales->where('Tenure','=','FH'); 

       if($match->minPrice != '0') 
       { 
        $sales->where('PriceFreehold', '>=' , $match->minPrice); 
       } 

       if($match->maxPrice != '0') 
       { 
        $sales->where('PriceFreehold', '<=', $match->maxPrice); 
       } 

      } 

      if($match->tenureLh == '1') 
      { 
       $sales->where('Tenure', '=', 'LH'); 


       if($match->minPrice != '0') 
       { 
        $sales->where('PriceLeasehold', '>=' , $match->minPrice); 
       } 

       if($match->maxPrice != '0') 
       { 
        $sales->where('PriceLeasehold', '<=', $match->maxPrice); 
       } 

      } 
     } 


     $results = $sales->orderBy('sales.updated_at', 'asc')->get(); 

Spiel Modell

public function people() 
{ 
    return $this->belongsTo('People', 'PeopleID', 'PeopleID'); 
} 

public function sale() 
{ 
    return $this->hasMany('Sale'); 
} 

Verkauf Modell

public function match() 
{ 
    return $this->belongsTo('Match'); 
} 

Leute Modell

public function matches() 
{ 
    return $this->hasMany('Match', 'PeopleID', 'PeopleID'); 
} 

public function sale() 
{ 
    return $this->hasMany('Sale'); 
} 

@uptade

Derzeit bin ich die Ergebnisse aus dieser Aussage bekommen:

$sales->whereRaw("match (`county`) against (?)", array($county)); 

was gut ist aber ich brauche die Ergebnisse weiter zu filtern und das ist, wo die „if“ Aussagen kommen in zu Ort .

"Übereinstimmung" enthält verschiedene Suchanmeldeinformationen für jeden Kunden. Wenn der Kandidat ein Produkt mit "Tenure: FH" sucht, muss ich im County "A" Produkte mit dem Kreis "A" und "Tenure" mit "FH" anzeigen (deshalb habe ich einige dieser "Wenn" -Aussagen gemacht)). Aber diese Aussagen scheinen nicht zu funktionieren, da ich ALLE Ergebnisse für den Kreis "A" bekomme, wobei "Tenure" "FH" oder anders als "FH" ist.

Also das Problem muss mit diesen "Ifs" ​​sein, da sie das Ergebnis nicht weiter filtern.

Stellen Sie sich vor, Sie haben sich mit der Autohändler-Website angemeldet und suchen ein rotes 4-türiges Auto, aber das Ergebnis sind ALLE 4-türigen Autos, aber mit allen anderen Farben (aber Sie wollten eine rote?) - So funktioniert es im Moment.

+0

Ich denke, es wäre gut, uns zu sagen, was ist Ihr erwartetes Ergebnis und das Ergebnis, das Sie gerade bekommen? – SteD

+0

@SteD Könnten Sie bitte mein Update sehen? Ich habe meinen Beitrag bearbeitet und dort erklärt. Prost. –

Antwort

-1

Ich denke, Sie können dd(DB::getQueryLog()); tun, um zu sehen, welche Abfrage Sie am Ende bekommen.

+0

Es wäre einfacher, einfach so etwas zu sagen: dd ($ sales-> toSql()); vor dem get(); und diese Antwort bietet keine Lösung für dieses Problem, obwohl es helfen wird, die Frage zu debuggen. – ExohJosh