2015-11-06 45 views
0

我想弄清楚從數據庫中檢索結果的最佳方法,使created_at是最近的,並且還檢查另一個值(在這種情況下Temps - >值)相匹配的特定標準..Laravel雄辯尋找最大(日期)與額外的搜索條件

例如(縮寫一些信息)

LOCATIONS

+----+---------+ 
| ID | CITY | 
+----+---------+ 
| 1 | DALLAS | 
| 2 | CHICAGO | 
| 3 | ATLANTA | 
+----+---------+ 

滕普斯

+----+-------+----------+------------+ 
| ID | VALUE | CITY_ID | CREATED_AT | 
+----+-------+----------+------------+ 
| 1 | 70 |  1 |  2010 | 
| 2 | 95 |  1 |  2015 | 
| 3 | 90 |  2 |  2010 | 
| 4 | 80 |  2 |  2015 | 
| 5 | 99 |  3 |  2015 | 
+----+-------+----------+------------+ 

我的位置模型。

class Location extends model 
{ 
... 
    public function latestValue() 
    { 
     return $this->hasOne('App\Temp')->latest(); 
    } 

在這種情況下,我只想其中最新溫度讀數> 90的位置..

在若有

$highTemps = Location::with('latestValue')->get(); 

我的控制器,而無需通過每個城市迭代明確地說,是否有辦法調整我的雄辯關係,甚至是使用收集方法來過濾結果?我看過filter()但我不確定如何在關係上使用它。特別是如果你想深入過濾2-3個關係。 (想象一下,我將從國家 - >國家 - >位置 - >臨時工 - > latestValue等)

讓初始查詢篩選結果將會很棒。但我無法弄清楚groupBy()max()having()等的組合,以使雄辯的陳述有效。

回答

0

我認爲你建立關係,這是錯的.. 問題很簡單,如果關係hasMany()將用於..

首先,最新的條目將是牽強,之後過濾該max出其中。

class Location extends model 
{ 
... 
    public function latestValue() 
    { 
     return $this->hasMany('App\Temp')->latest(); 
    } 

休息並不是那麼典型,我假設。