laravel-5 - Laravel 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')
        ->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);

使用这个link供引用

关于laravel-5 - Laravel Eloquent 如何选择和操作数据透视表中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58023722/

相关文章:

Laravel Nova + Spatie 媒体库

php - 如何使用自定义自增主键 Laravel 添加模型

database - 无法声明类 App\User,因为该名称已在我的浏览器中使用

php - Laravel Eloquent 模型依赖注入(inject),使用预先格式化的 Id 进行 find()

php - Laravel 从数据库中删除行并列出剩余行

php - 如何将数组值从一个方法传递给 Laravel 中的另一个方法?

php - 删除特定路由组的重定向

php - Laravel 获取属性数据

laravel - 使用 laravel 将文件存储到 aws s3

php - 在 Eloquent 模型中返回集合而不是关系