我在通知和alerFrequencies表之間有一對多的關係。他們都有模型。我寫了這個函數從alerFrequencies表中提取所有最新的created_at
時間戳。Laravel:一對多關係只返回一條記錄
例如,如果我的通知表中有一個網站,並且在警報表中有created_at
時間戳記,它應該只返回最新的時間戳記。如果我在通知表中有2個網站的時間戳不同,它應該將這兩個網站的時間戳分開。
不管通知表中的網站數量如何,它只返回最新的。一個誰得到一個更好的主意寫的查詢,我將不勝感激各種幫助和建議。
public function alert(){
$alert_timestamp = AlertFrequency::with('notification')->select('created_at')->groupBy('created_at')->orderBy('created_at','DESC')->first();
$alert_timestamp=$alert_timestamp->created_at->toDateTimeString();
if($alert_timestamp==null){
return false;
}
return $alert_timestamp;
}
在數據庫中我要表通知和alerFrequencies表,具有一對多的關係。 notification_id是alertFreqency表中的外鍵。通知有列:是,網址和alertFrequencies有:id。 notification_id和created_at。現在我想獲取通知表中每個網站的最新created_at。
我不知道你要做什麼。上述查詢將只返回1個alert_frequency和** only **表中的created_at字段。這兩部分在你的查詢中完全沒有任何用處:':: with('notification')''''> groupBy('created_at')'。如果您在選擇(或任何您的外鍵)中不包含'id',則無法加載關係。由於您只選擇最新的(' - > first()')'created_at'字段,所以group by將不會分組。 – devk
當然,它只返回一個,因爲在你的查詢中你只選擇第一個,在你的查詢結束 - > first()選擇第一條記錄,將其更改爲 - > get() –
@Levente Nagy給我錯誤:未定義的屬性:Illuminate \ Database \ Eloquent \ Collection :: $ created_at –