gpt4 book ai didi

php - Laravel 在其他专栏上同步

转载 作者:行者123 更新时间:2023-11-29 07:04:52 30 4
gpt4 key购买 nike

我做了一个民意调查。民意调查有选项,选项有投票。

当有人投票时,我将其存储在数据库中,如下所示:

public function store(Option $option)
{
$option->votes()->sync([Auth::user()->id]);
}

数据透视表如下所示:

id
option_id
user_id

如何确保当用户已经投票,然后投票给其他事物时,其他投票会消失?

sync方法只是寻找id。

最佳答案

这是我会做的:

数据库:

Poll
- name

Option
- value
- poll_id

Vote
- poll_id
- option_id
- user_id

关系:

class Poll extends Model 
{
public function options ()
{
return $this->hasMany(Option::class);
}

public function votes ()
{
return $this->hasMany(Vote::class);
}
}

class Option extends Model
{
public function poll ()
{
return $this->belongsTo(Poll::class);
}
}

class Vote extends Model
{
public function poll ()
{
return $this->belongsTo(Poll::class);
}

public function option ()
{
return $this->belongsTo(Option::class);
}

public function user ()
{
return $this->belongsTo(User::class);
}
}

class User extends Model
{
public function votes ()
{
return $this->hasMany(Vote::class);
}
}

避免用户可以投票给多个选项的代码:

// We first remove any eventually vote from this user on this poll
$user->votes()->where('poll_id',$poll->id)->delete();

// We then create a vote for the user
$user->votes()->create([
'poll_id' => $poll->id,
'option_id' => $option->id
]);

这将为您提供更大的灵 active 。例如,您可以使用此代码,通过投票在用户和民意调查之间创建 hasManyThrough 关系,以列出某个用户的所有民意调查

关于php - Laravel 在其他专栏上同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136360/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com