The conventional approach to removing cookies from Laravel is to call the
#forget method on the
$cookie = \Cookie::forget('myCookie');
But when we do that, the cookie remains. What went wrong? Well, we need to make sure to add that cookie to the response.
Now the cookie was removed. But that's kind of annoying, and easy to forget. Plus, what if we're returning some JSON and want to use the cleaner return syntax.
\Cookie::forget('myCookie'); return ['ok' => true];
Do we have to lose the syntax just so we can remove the cookie?
Instead of making sure I remember to add my
$cookie object to the response, I instead use the
#queue method to avoid it all together.
\Cookie::queue(\Cookie::forget('myCookie')); return ['ok' => true];
#queue method allows you to queue up the result of whatever cookie action you're working on, be it creating or deleting, and it handles adding it to the headers during a middleware process following your controller action.
Following this approach consistently means you never have to worry about whether you've added the
$cookie to your response or not. Enjoy!