php 如何在Laravel中创建$validated数组中的默认请求值?

yruzcnhs  于 2023-01-04  发布在  PHP
关注(0)|答案(2)|浏览(212)

控制器代码:

public function store(UserStoreRequest $request) {

$validated = $request->validated();

$validated['user_type_id'] = 2;
$validated['user_gender_id'] = $request->user_gender_id;
$validated['last_login_at'] = Carbon::now();
$validated['password'] = Hash::make($request->password);

User::create($validated);

return to_route('all-users'); 
}

有没有更好的办法?
我试过这样的方法,但没有成功:

$validated = $request->validated([
        'user_type_id' => 2,
        'user_gender_id' => $request->user_gender_id,
        'last_login_at' => Carbon::now(),
        'password' => Hash::make($request->password),
    ]);
avwztpqn

avwztpqn1#

没有官方的laravel方法来实现这一点,但是您可以在迁移中使大多数这些值成为默认值。
你也可以通过类似这样的方法来清理控制器。

public function store(UserStoreRequest $request) {

    User::create([
      ...$request->validated(), 
      'user_gender_id' => $request->user_gender_id;
      'password' => Hash::make($request->password)
    ]);

    return to_route('all-users'); 
}

对于默认值,您可以在迁移中执行此操作

Schema::create('flights', function (Blueprint $table) {
    $table->foreignId('user_type_id')
        ->nullable()
        ->default(2)
        ->constrained();
});

最后,要将last_login_at转换为a now,默认情况下,您可以通过几种方式来实现,但在模型上使用mutator可能是最好的。

puruo6ea

puruo6ea2#

我是这样做的:

User::create([
        ...$request->validated(), 
        'last_login_at' => now(),
        'user_type_id' => 2,
        'password' => Hash::make($request->password)
    ]);

如果您存储一些图像,请执行以下操作:

$validated = $request->validated();

   if($request->hasFile('photo')) { ..etc
   $validated['photo'] = $filename; 
   }

      User::create([
        ...$validated, 
        'last_login_at' => Carbon::now(),
        'user_type_id' => 2,
        'password' => Hash::make($request->password)
    ]);

相关问题