Чтобы ответить на ваш вопрос, вы не должны вызывать один метод контроллера из другого. Как упомянул @elfu, это не предназначенная функциональность контроллера в любом случае. Его сообщение верное, и в вашем случае вам, вероятно, следует использовать модель User в качестве местоположения этого метода, но я подумал, что немного подумаю.
Если вы хотите обмениваться методами между несколькими контроллерами, хорошее место для этого - Trait. В некоторых случаях вы не ссылаетесь на модель, которая является общей для контроллеров, и Trait будет вашим лучшим вариантом.
Чтобы включить признак, вы можете ссылаться на него, включив его в верхней части вашего контроллера, а затем с помощью оператора 'use' после объявления класса для контроллера. Вот пример:
use App\Traits\ExampleTrait;
class CarController extends Controller
{
use ExampleTrait;
...
Вы бы сделали то же самое в UserController. Затем любой метод, который вы поместите в ExampleTrait, будет напрямую доступен из CarController и UserController, указав его как $ this-> methodName (), точно так же, как и любой другой метод в том же контроллере.
В вашем конкретном случае я бы сказал, что ваша логика, вероятно, должна храниться в модели User, поскольку машины для пользователя действительно являются АТРИБУТОМ модели User, но приведенный выше дает вам еще один вариант для работы.