【问题标题】:How to set user profile如何设置用户配置文件
【发布时间】:2022-01-10 23:33:03
【问题描述】:

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

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');
}

这是刀片的代码:

<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>

【问题讨论】:

  • 只是出于好奇,您为什么在 if 语句中进行验证?

标签: laravel model-view-controller laravel-8


【解决方案1】:

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

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

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

这不是您唯一的问题。 !is_null($request-&gt;user_image &amp;&amp; $request-&gt;job) 将始终为 true,因为 $request-&gt;user_image &amp;&amp; $request-&gt;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');
}

【讨论】:

    【解决方案2】:

    在这一行中,您对所有用户而非特定用户的查询

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

    试试这个

    $user->update($data);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      相关资源
      最近更新 更多