2016-08-01 23 views
0

データベースからデータを取得しようとしていますが、正しい結果が得られません。 foreachの始めにある "$ sale-> whereRaw"クエリからいくつかのデータを取得しているので、私の "If"文が正しく動作していないように見えます。私が間違っていることは何ですか?Laravel Eloquentを使用してデータベースから正しいデータを取得する

私はLaravel 4.2で作業しています。

コントローラー:

 $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(); 

マッチモデル

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

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

販売モデル

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

人々モデル

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

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

@uptade

現在、私はこの文の結果から取得しています:良いです

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

しかし、私はさらに結果をフィルタリングする必要があり、これはどこのステートメントは場所に来て、「あれば」 。

"一致"には、顧客ごとに異なる検索資格情報が含まれています。候補者が「Tenure:FH」の製品を探している場合郡Aでは郡Aの商品とTenureがFHの商品を表示する必要があります。 )。しかし、これらのステートメントは、 "Tenure"が "FH"または "FH"以外の郡 "A"のすべての結果を取得しているので機能していないようです。

したがって、結果がさらにフィルタリングされていないため、問題は「Ifs」である必要があります。

車の販売代理店のウェブサイトにログインし、赤色の4ドアカーを探しているとしますが、あなたが得ている結果はすべての4ドアカーですが、すべての色が異なります(しかし、 - これは現時点でどのように動作しているかです。

+0

私はあなたの期待している結果とあなたが現在得ている結果は何かを教えてもらえますか? – SteD

+0

@SteD更新情報をご覧ください。私は自分の投稿を編集し、そこで説明しました。乾杯。 –

答えて

-1

dd(DB::getQueryLog());を実行すると、最終的にどのようなクエリが表示されるかわかります。

+0

次のようなことを言うのは簡単でしょう:dd($ sales-> toSql()); get()の前に。この答えはこの問題の解決には役立ちませんが、この問題の解決策はありません。 – ExohJosh

関連する問題