Я сделал опрос. У опроса есть варианты, и у опции есть голоса.Laravel sync на другом столбце
Когда кто-то голосует я хранить его в БД, как это:
public function store(Option $option)
{
$option->votes()->sync([Auth::user()->id]);
}
Сводная таблица выглядит следующим образом:
id
option_id
user_id
Как я могу убедиться, что, когда пользователь уже проголосовал , а затем голосует за что-то другое, другой голос уходит?
Метод синхронизации ищет только идентификатор.
Метод синхронизации, который вы назвали, будет делать именно то, что вам нужно. Он будет искать столбцы сводной таблицы, которые имеют 'user_id == Auth :: user() -> id' AND' option_id == $ option-> id'. Так что все должно быть хорошо. – devk
@devk Вы правы! Слава богу, извините. Но любая идея, как я могу убедиться, что пользователь может голосовать только один раз за опрос? – Jamie
Я не уверен, как настроена ваша база данных (я предполагаю, что параметры относятся к опросу каким-то образом, не уверен, что от многих до многих или от одного до многих). Один из способов - иметь поворот между опросом и пользователем. Если опорная точка существует, пользователь проголосовал за опрос (больше не могу), если он не может голосовать. Но в зависимости от вашего дизайна у вас могут быть лучшие варианты – devk