【发布时间】:2016-12-06 09:20:43
【问题描述】:
我正在尝试从数据库中检索数据,但是我没有得到正确的结果。看起来我的“If”语句无法正常工作,因为我从 foreach 开头的“$sale->whereRaw”查询中获取了一些数据。我做错了什么?
我正在使用 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));
这很好,但是我需要进一步过滤结果,这就是“if”语句的用武之地。
“匹配”包含每个客户的不同搜索凭据。如果候选人在“A”县寻找“Tenure: FH”的产品,我需要展示“A”县的产品,并且“Tenure”是“FH”(这就是为什么我做了一些“if”语句)。然而,这些陈述似乎不起作用,因为我得到了县“A”的所有结果,其中“任期”是“FH”或不是“FH”。
所以问题一定出在那些“如果”上,因为它们没有进一步过滤结果。
假设您已在汽车经销商网站上登录,并且您正在寻找一辆红色的 4 门汽车,但您得到的结果是所有 4 门汽车,但颜色各不相同(但您想要一辆红色的,对吗?)-这就是它目前的工作方式。
【问题讨论】:
-
我认为最好告诉我们您的预期结果和您目前得到的结果?
-
@SteD 你能看看我的更新吗?我已经编辑了我的帖子并在那里进行了解释。干杯。
标签: laravel laravel-4 eloquent