如何设置用户配置文件

How to set user profile

我想让用户为自己创建一个配置文件,但我不知道该怎么做。 当我执行此代码时,所有用户的配置文件都会更改并成为一个 这是用户面板的控制器

public function UpdateUser(Request $request, User $user)
{
    if (!is_null($request->user_image && $request->job)) {
        $data = $request->validate([
            'user_image' => ['required', 'mimes:jpg,png,jpeg', 'max:5120'],
            'job'        => ['required', 'min:3', 'max:14'],
        ]);
        $file = $request->file('user_image');
        $file_path = '/images/' . 'user' . '/';
        $file->move(public_path($file_path), $file->getClientOriginalName());
        $data['user_image'] = $file_path . $file->getClientOriginalName();
    }
    User::query()->update($data);

    return redirect('/user-profile');
}

这是 blade 的代码:

<form method="post" action="{{route('user.update')}}" enctype="multipart/form-data">
    @method('PATCH')
    @csrf
    <div class="input-group mb-3">
        <div class="input-group-prepend">
            <span class="input-group-text" id="basic-addon1">آپلود عکس</span>
        </div>
        <input type="file" name="user_image" class="form-control" placeholder="user_image" aria-label="user_image"
               aria-describedby="basic-addon1" value="{{old('user_image')}}">
    </div>

    <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">تخصص</label>

        <input type="text" class="form-control" name="job" id="job" placeholder=" تخصص خود را وارد کنید"
               value="{{old('job')}}">
    </div>

    <div class=" d-flex">
        <button type="submit" class=" btn btn-success mr-auto">
            <div>ثبت</div>
        </button>
    </div>
</form>

在这一行中,您查询所有用户而不是特定用户

User::query()->update($data);

试试这个

$user->update($data);

User::query()->update(...) 将更新 table 中的每一行,因为您没有以任何方式限制它。

由于此页面是针对当前经过身份验证的用户的,因此请使用 $request 中的 user() 方法。您可以改用 Auth 门面或 auth() 辅助函数。

$request->user()->update($data);

但这不是您唯一的问题。 !is_null($request->user_image && $request->job) 将始终是 true,因为 $request->user_image && $request->job 将始终产生一个 boolean 永远不会被视为 null 的值,因此您不妨删除 if声明。

此外,(在这种情况下并不重要,因为 if 语句总是 运行)如果您在 if 语句中定义了一个变量,您还应该定义一个默认值,即当条件为 false.

public function UpdateUser(Request $request)
{
    $data = $request->validate([
        'user_image' => ['required', 'mimes:jpg,png,jpeg', 'max:5120'],
        'job'        => ['required', 'min:3', 'max:14'],
    ]);

    $file = $request->file('user_image');

    $file_path = '/images/' . 'user' . '/';
    $file->move(public_path($file_path), $file->getClientOriginalName());
    $data['user_image'] = $file_path . $file->getClientOriginalName();

    $request->user()->update($data);

    return redirect('/user-profile');
}