【问题标题】:Laravel Eloquent How can I select and manipulate rows in pivot table?Laravel Eloquent 如何选择和操作数据透视表中的行?
【发布时间】:2019-09-20 07:28:14
【问题描述】:

我有三个数据库表,分别称为 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)

【问题讨论】:

    标签: laravel-5 eloquent


    【解决方案1】:

    使用 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作为参考

    【讨论】:

    • 这段代码合适吗:$users = MyUser::all(); foreach($users as $user) { foreach ($user->groups as $g) { $validBefore = $g->pivot->valid_before; if(strtotime($validBefore) groups()->detach($g); } } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2018-11-11
    • 2015-06-24
    相关资源
    最近更新 更多