【问题标题】:Retrieving correct data from the database using Laravel Eloquent使用 Laravel Eloquent 从数据库中检索正确的数据
【发布时间】: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


【解决方案1】:

我想你可以通过dd(DB::getQueryLog()); 看看你最终得到了什么查询。

【讨论】:

  • 这样说会更容易:dd($sales->toSql());在 get() 之前;这个答案并不能解决这个问题,尽管它有助于调试问题。
猜你喜欢
  • 2019-12-11
  • 2022-07-27
  • 2019-03-04
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多