То, чего вы пытаетесь достичь, практически невозможно из-за того, как работает определение переменных в mysql.
Определяемые пользователем переменные зависят от сессии.Пользовательская переменная, определенная одним клиентом, не может быть просмотрена или использована другими клиентами ... Все переменные для данного клиентского сеанса автоматически освобождаются, когда этот клиент выходит
из https://dev.mysql.com/doc/refman/8.0/en/user-variables.html
Исключения составляют:
(Исключение: пользователь, имеющий доступ к таблице схемы пользователя user_variables_by_thread, может видеть все пользовательские переменные для всех сеансов.)
из https://dev.mysql.com/doc/refman/8.0/en/user-variables.html
Два действия, которые вы представили в своем примере, - это два разных процесса php, которые обычно не разделяют сеанс mysql, поэтому они не разделяют пользовательскую переменную mysql.Я не знаю, какова ваша главная цель, но даже если переменные были разделены, скрипт не будет работать должным образом, если у вас есть несколько пользователей, потому что есть сценарии, в которых ваши переменные будут перезаписаны параллельными пользователями, например:
Пользователь с идентификатором 1 посещает indexAction и устанавливает переменную @user_id на «1», Пользователь с идентификатором 2 посещает indexAction и устанавливает переменную на «2».Пользователь с идентификатором 1 посещает listAction, и переменная будет «2» вместо «1».
Я думаю, вы должны пересмотреть свою реализацию.Если вы дадите мне больше информации о вашей цели, то, возможно, я могу помочь с некоторыми советами.Не зная больше деталей, что на самом деле выглядит так, как вам нужно, это использовать пользовательский сеанс для передачи переменной между действиями.как-то так
public function indexAction()
{
$this->get('session')->set('user_id', $id);
return [];
}
public function listAction(Request $r)
{
$this->get('session')->get('user_id');
}
Надеюсь, это поможет,
Alexandru Cosoi