Похоже, вы смешали контроллер с моделью.
Видите, контроллер предназначен для обработки запроса. Модель предназначена для сохранения сущностей и управления их отношениями. Ваш Candidate
не является ни тем, ни другим.
Laravel имеет систему подсказок типа, которая автоматически вводит экземпляр типа подсказки в методе контроллера. Следовательно, если бы у вас был контроллер типа
<?php
use Illuminate\Http\Request;
class CandidateController {
public function fileUpload( Request $request ) {
...
}
}
, а маршрут типа
Route::post('candidate','CandidateController@fileUpload');
, тогда метод fileUpload
получил бы экземпляр \Illuminate\Http\Request
Теперь, если вы отправили файл из внешнего интерфейса, файл будет в запросе (как показано в вашем коде)
$image = $request->file('image'); // 'image' is just the input name
Так что вам не следует вызывать fileUpload
из другого метода , Это наоборот. Интерфейс отправляет запрос, контроллер обрабатывает запрос и «извлекает» файл, который затем будет сохранен в диске / облаке / где угодно, и его метаданные будут отправлены в DDBB и связаны с действующим пользователем
Контроллер перемещает изображение (вы уже делаете это) по его намеченному пути, а затем сохраняет его в модели, как
public function fileUpload( Request $request ) {
$image = $request->file('image');
$candidate = new App\Candidate();
$name = time().'.'.$image->getClientOriginalName();
$image->move(public_path("images"), $name);
$candidate->path = public_path('images').'/'.$name;
$candidate->save();
}
Так как есть другие поля, я думаю, вы отправляете их также в запросе, как
$candidate->seat = $request->seat;
И действующий пользователь, если вам это нужно, должен прийти от помощника по аутентификации (например, сеанса или токена), чтобы избежать злонамеренного посетителя, отправляющего идентификатор другого пользователя.