我在通知和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 –