我有三个数据库表,分别称为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”时刻为止。如果“ valid_before”小于当前时间,则必须将用户从组中排除,并且必须删除数据透视表中的相应行。如何在数据透视表行中选择strtotime($ validBefore)<strtotime($ date)的行,然后使用Eloquent删除它们?
使用cronjob然后简单地使用detach($group_id)
如下:
$user = User::find($id);
if(time_exceeded($user->id)) //checks if user should stay in a group
$user->groups()->detach($group_id);
使用此链接进行参考
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句