2016-08-01 9 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"로 제품을 찾고있는 경우 County "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

관련 문제