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

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

在數據庫表中存儲多個復選框值 拉拉維爾

在數據庫表中存儲多個復選框值 拉拉維爾

PHP
aluckdog 2022-09-17 21:57:08
到目前為止,我知道我需要將復選框值存儲在數組中,如下所示:<input name="thinking_traps[]" type="checkbox" value="1"><input name="thinking_traps[]" type="checkbox" value="2"><input name="thinking_traps[]" type="checkbox" value="3">但是我不確定如何將這些值正確傳遞給控制器并將其添加到遷移表中?是否將每個值作為單獨的列添加到數據庫中?在這里,我嘗試添加它們,就像任何其他輸入一樣:public function store(Request $request)    {        $this->validate($request, [            'thought_entry' => 'required'        ]);        $entry = new ThoughtJournal;        $entry->user_id = auth()->user()->id;        $entry['entry_date'] = date('Y-m-d H:i');        $entry->thought_entry = $request->input('thought_entry');        $entry->emotions = $request->input('emotions');        $entry->thinking_traps = $request->input('thinking_traps');        $entry->balanced_thought = $request->input('balanced_thought')        $entry->save();        return redirect('/dashboard');    }public function up()    {        Schema::create('thoughtjournal', function (Blueprint $table) {            $table->increments('entry_id');            $table->integer('user_id');            $table->date('entry_date');            $table->mediumText('thought_entry');            $table->            $table->timestamps();        });    }
查看完整描述

3 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

我在您的表遷移文件中沒有看到thinking_traps


class ThoughtJournal{


   // Add it's type to casts as array

   public $casts = ['thinking_traps'=> 'array'];


   // Add it to fillables if you haven't

   public $fillable = ['thinking_traps',...];


   //...

}

存儲

其次,在您的存儲方法中,當復選框中沒有選擇任何項目時,您需要將其設置為數組,如下所示


   ...

   $entry->thinking_traps     = $request->has('thinking_traps') 

                              ? $request->get('thinking_traps') 

                              : [];

作為預防措施,對于驗證,您可以像這樣進行驗證:


$this->validate($request, [

   'thinking_traps' => 'nullable|in:1,2,3' // your values

]);

遷移

對于遷移,我沒有看到您在那里設置了列,您可以像這樣修改遷移文件:


// You can have it as json

$table->json('thinking_traps')->nullable();


// or string

$table->string('thinking_traps')->nullable();

或者,如果您不想在 shell/cmd 中重新創建表,則可以創建一個單獨的遷移文件,如下所示:artisan


php artisan make:migration add_thinking_traps_to_thoughtjournal_table --table=thoughtjournal

此命令將單獨添加一個遷移文件,并像往常一樣添加該列,然后您可以添加該列。php artisan migrate


如果可行,請告訴我們。


查看完整回答
反對 回復 2022-09-17
?
慕的地10843

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

不應在數據庫中的一行中存儲多個值。應單獨存儲它,以便對數據進行規范化。


查看完整回答
反對 回復 2022-09-17
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

發布值將是一個數組,即使您選中了一個復選框。

$thinking_陷阱 = $request->輸入(“thinking_traps”);

$thinking_traps 將是一個數組 因此請嘗試將數組值保存在單獨的表中,作為具有外鍵的多行


查看完整回答
反對 回復 2022-09-17
  • 3 回答
  • 0 關注
  • 174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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