我正在尝试从数据库中检索数据但是我得不到正确的结果。它看起来像我的"如果"语句无法正常工作,因为我从" $ sale-> whereRaw"中获取了一些数据。查询是在foreach的开头。我做错了什么?
我正在使用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));
哪个好,但我需要进一步过滤结果,这就是&#34; if&#34;声明到位。
&#34;匹配&#34;包含每个客户的不同搜索凭据。如果候选人正在寻找产品&#34;任期:FH&#34;在县&#34; A&#34;我需要展示县和#34; A&#34;哪个&#34;任期&#34;是&#34; FH&#34; (这就是为什么我做了一些&#34; if&#34;陈述)。然而,这些陈述似乎不起作用,因为我得到县的所有结果&#34; A&#34;其中&#34;任期&#34;是&#34; FH&#34;或者&#34; FH&#34;。
因此问题必须与那些&#34; Ifs&#34;因为他们没有进一步过滤结果。
想象一下,您已经与汽车经销商网站签约并且您正在寻找一辆红色的4门车,但是您得到的结果是所有4门车,但有各种不同的颜色(但你想要一个红色的权利吗?) - 这就是它目前的工作方式。
答案 0 :(得分:-1)
我认为您可以dd(DB::getQueryLog());
查看最终得到的查询。