Laravel 5 Laravel雄辩地告诉我们如何选择和操作数据透视表中的行?

Laravel 5 Laravel雄辩地告诉我们如何选择和操作数据透视表中的行?,laravel-5,eloquent,Laravel 5,Eloquent,我有三个数据库表,分别称为user(id,name)、group(id,name)和user_group(user_id,group_id,valid_before),它们之间有多对多的关系 class User extends Model { protected $table = 'user'; public function groups() { return $this->belongsToMany(Group::class, 'user_group

我有三个数据库表,分别称为user(id,name)、group(id,name)和user_group(user_id,group_id,valid_before),它们之间有多对多的关系

class User extends Model
{
    protected $table = 'user';

    public function groups()
    {
    return $this->belongsToMany(Group::class, 'user_group')
        ->withPivot('valid_before');
    } 
}

class Group extends Model
{
    protected $table = 'group';

    public $timestamps = false;

    public function user()
    {
        return $this->belongsToMany(User::class, 'user_group');
    }
}

用户可以是某个组的成员,直到“之前有效”时刻。如果“valid_before”小于当前时间,则必须将该用户从组中排除,并且必须删除透视表中的相应行。如何在pivot表中选择strottime($validBefore) 使用cronjob,然后简单地使用
detach($group\u id)
如下所示:-

$user = User::find($id);
if(time_exceeded($user->id))  //checks if user should stay in a group
$user->groups()->detach($group_id);

将此代码用于引用

此代码是否合适:$users=MyUser::all();foreach($users as$user){foreach($user->groups as$g){$validBefore=$g->pivot->valid_before;if(strotime($validBefore)groups()->detach($g);}}