使用Laravel Eloquent

时间:2016-08-01 10:21:18

标签: laravel laravel-4 eloquent

我正在尝试从数据库中检索数据但是我得不到正确的结果。它看起来像我的"如果"语句无法正常工作,因为我从" $ 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门车,但有各种不同的颜色(但你想要一个红色的权利吗?) - 这就是它目前的工作方式。

1 个答案:

答案 0 :(得分:-1)

我认为您可以dd(DB::getQueryLog());查看最终得到的查询。