Laravel Controller: как использовать функцию сохранения и создания

В настоящее время я новичок в laravel и работаю над базовым проектом, в котором поставщик услуг (SP) может публиковать подробности обслуживания, заполняя форму.

Форма обслуживания

Я пытаюсь проверить, загрузил ли SP понравившееся изображение. Если да, то переименуйте файл, используя

$featured = $request->featured;
$featured_new_name = time().$featured->getClientOriginalName();
$featured->move('uploads/services', $featured_new_name);

и сохранить его в uploads/services/ каталог.

мой ServiceController.php выглядит так

public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|max:255',
'address' => 'required|max:255',
'city' => 'required|max:255',
'state' => 'required|max:255',
'zipcode' => 'required|integer|digits:5',
'category_id' => 'required',
'workingday' => 'required',
'content' => 'required'
]);
//checking if featured image (logo file) is uploaded or not

if($request->hasfile('featured'))
{
$featured = $request->featured;
$featured_new_name = time().$featured->getClientOriginalName();
$featured->move('uploads/services', $featured_new_name);
}
else {      }

$featured->move('uploads/services', $featured_new_name);

$service = Service::create([
'name' => $request->name,
'content' => $request->content,
'address' => $request->address,
'city' => $request->city,
'state' => $request->state,
'zipcode' => $request->zipcode,
]);

if($request->hasfile('featured'))
{
$service = Service::create([
'name' => $request->name,
'content' => $request->content,
'featured' =>'uploads/services/'.$featured_new_name,
'address' => $request->address,
'city' => $request->city,
'state' => $request->state,
'zipcode' => $request->zipcode,
]);
}
$service->workingdays()->attach($request->workingday);
$service->categories()->attach($request->category_id);
$service->user_id=auth()->id();
$service->save();

Session::flash('success','Service created successfully');
return view('sp.services.create')->with('categories', Category::all())->with('workingday', Workingday::all());
}

В файле миграции:

public function up()
{
Schema::create('services', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('address');
$table->string('city');
$table->string('state');
$table->string('zipcode');
$table->integer('routes_id');
$table->string('featured')->default('/uploads/services/default.png');
$table->text('content')->nullable();
$table->string('slug');
$table->integer('user_id');
$table->softDeletes();
$table->timestamps();

});
}

Я сохраняю авторизованный user_id наряду со всеми другими деталями обслуживания.
Когда пользователь загружает файл логотипа, этот код сохраняет две записи в базе данных: одну с правильным user_id и один с 0, Когда пользователь не загружает файл логотипа, сохраняется только одна запись со всеми правильными значениями.

созданные записи в поле зрения

Вот user_id 2 является правильной записью. Пожалуйста, помогите мне улучшить этот код.

0

Решение

Кажется, ваш сеанс истек, когда вы сохраняете вторую запись, поэтому user_id равен 0 для вашей второй записи.

Можете ли вы проверить свою сессию следующим образом, прежде чем сохранить запись?

if (Auth::user()) {

// post the data and save the record

} else {

// redirect the user to the login page

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]