亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 中是否有任何輔助函數可以將表單數據分配到模型中?

Laravel 中是否有任何輔助函數可以將表單數據分配到模型中?

PHP
冉冉說 2023-08-26 17:29:29
我知道 laravel 中有一個resource功能,據我所知,resource類似于jsontomodel及其相反的功能。因此,當我處理表單數據時,當前使用以下自定義幫助器方法。public function assignFormdata(Request $request, $model, $map = []){    foreach($map as $input=>$field) {        // $field is model's param. $input is form data key.        $model->$field = $request->input($input) ?? $field;    }    return $model;}..這個方法已經存在于laravel中嗎?或者類似的東西..?
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

據我所知,Laravel 中沒有“標準”方法可以完成上面的操作,如果輸入缺失,則為輸入分配默認值,并控制使用map.

我相信,最接近您正在尋找的東西是批量分配。

有許多不同的方法和模式來處理這些類型的請求,您的方法對我來說似乎很好。我個人使用Form Requests?+?DTO,因為代碼本身文檔記錄得很好。舉個例子:

控制器:

class UsersController extends Controller

{

? ? ...


? ? public function store(CreateUserRequest $request)

? ? {

? ? ? ? $user = User::create($request->toCommand());


? ? ? ? // Return response however you like

? ? }


? ? ...

}

表單請求


class CreateUserRequest extends FormRequest

{

? ? ...


? ? public function rules()

? ? {

? ? ? ? // Validate all the data here

? ? }


? ? ...


? ? public function toCommand() : CreateUserCommand

? ? {

? ? ? ? return new CreateUserCommand([

? ? ? ? ? ? 'name' => $this->input('name'),

? ? ? ? ? ? 'birthdate' => Carbon::parse($this->input('birthdate')),

? ? ? ? ? ? 'role' => $this->input('role'),

? ? ? ? ? ? 'gender' => $this->input('gender'),

? ? ? ? ? ? ...

? ? ? ? ]);

? ? }

}

命令DTO


class CreateUserCommand extends DataTransferObject

{

? ? /** @var string */

? ? public $name;


? ? /** @var \Carbon\Carbon */

? ? public $birthdate;


? ? /** @var string */

? ? public $role = 'employee'; // Sets default to employee


? ? /** @var null|string */

? ? public $gender;? ? ? ? ? ? // Not required??

}

class User extends Model

{

? ? ...


? ? protected $fillable = [

? ? ? ? 'name',

? ? ? ? 'birthdate',

? ? ? ? 'role',

? ? ? ? 'gender',

? ? ];?


? ? ...



? ? public static function create(CreateUserCommand $command)

? ? {

? ? ? ? // Whatever logic you need to create a user

? ? ? ? return parent::create($command->toArray());

? ? }

}

這是一種相當“Laravel 方式”的做事方式,代碼本身向需要使用它的任何其他人(以及稍后的你:D)傳達了大量信息。


查看完整回答
反對 回復 2023-08-26
  • 1 回答
  • 0 關注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號