我的表模式
+rules
-id
-title
-description
+log
-id
-rules_id
-date MYSQL(YYYY-mm-dd)
我每天执行规则并更新日志表。如何获取今天未执行的规则?
规则模块
public function log()
{
return $this->hasMany('Log');
}
使用whereDoesntHave
:
$rules = Rules::whereDoesntHave('log', function($q){
$q->where('date', Carbon::now()->toDateString());
})->get();
whereDoesntHave
最近才添加(2014年12月)您可能需要更新Laravel。如果你不能使用这个:
$rules = Rules::whereHas('log', function($q){
$q->where('date', Carbon::now()->toDateString());
}, '<', 1)->get();
如果你对@lukasgeiter 提到的Carbon::now()不太了解,你可以使用简单的查询而不需要雄辩
$today = DATE('Y-m-d');
$rules = DB::table('rules')
->select('rules.id','rules.title','rules.description','log.date')
->join('log', 'rules.id', '=', 'rules.rules_id')
->where('DATE(log.date)', '!=', $today)
->first();