如何使用Laravel 4 Eloquent hasMany关系选择不在日志表上的记录



我的表模式

+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();

相关内容

  • 没有找到相关文章

最新更新