Niepoprawna ścieżka avatara w bazie danych

0

Próbuję zapisać oraz wyświetlić obrazek, który przesłał użytkownik jednak nie działa wyświetlanie dodanego obrazka, ponieważ wpis w bazie danych prowadzi do złej ścieżki.

baza.png

Pracuję lokalnie na XAMPP jeśli ma to jakiekolwiek znaczenie.

Migracja

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->string('avatar')->default('default.png');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

Obrazek

<img src="/storage/avatars/{{ $user->avatar }}" alt="{{ $user->name }}">

Formularz

<form method="POST" action="/users/{{ $user->id }}" enctype="multipart/form-data">
    @method('PATCH')
    @csrf
    <label for="avatar">avatar</label>
    <input type="file" name="avatar">
    <button type="submit">send</button>
</form>

Metoda zapisująca avatar

public function update(Request $request, User $user)
{
    $formData = request()->validate([
        'avatar' => ['image', 'mimes:jpeg,jpg,png', 'max:1024']
    ]);

    if (request()->avatar === NULL) {
        $image = 'default.png';
    } else {
        $image = $user->id . '_avatar_' . time() . '.' . request()->avatar->getClientOriginalExtension();
        $request->avatar->storeAs('avatars', $image);
    }
    
    $user->avatar = $image;
    $user->update($formData);

    return redirect('/');
}

W folderze config/filesystems.php

'default' => env('FILESYSTEM_DRIVER', 'public'),

Wpisałem komendę php artisan storage:link

1
$user->update($formData);

Nie nadpisujesz sobie przez to $user->avatar?

0
Patryk27 napisał(a):
$user->update($formData);

Nie nadpisujesz sobie przez to $user->avatar?

Hej, dzięki, bo naprowadziłeś mnie na rozwiązanie problemu :) Okazało się, że nie zapisuję nowej wartości, ponieważ nie była przekazana w tablicy $formData. Wątek można zamknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1