用的laravel5.2架構,下面這個調研問卷的控制器怎麼寫?demo如下:
資料表有3張,1和2多對多關係:
1、respondents //受訪者
2、sports //喜歡的運動
3、sport_respondent //關聯表
respondents
id name email
sports
id sport_name1 Basketball2 Football3 Table tennis4 Badminton5 Baseball6 Swimming
sport_respondent
id respondent_id sport_id
視圖:
問題:控制器怎麼寫?
public function store(Request $request){ $respondent= new Respondent; $respondent->name = $request->name; $respondent->email = $request->email; $respondent->save(); $sport = new Sport; //接下來怎麼寫? return redirect()->action('RespondentController@index');}
回複內容:
用的laravel5.2架構,下面這個調研問卷的控制器怎麼寫?demo如下:
資料表有3張,1和2多對多關係:
1、respondents //受訪者
2、sports //喜歡的運動
3、sport_respondent //關聯表
respondents
id name email
sports
id sport_name1 Basketball2 Football3 Table tennis4 Badminton5 Baseball6 Swimming
sport_respondent
id respondent_id sport_id
視圖:
問題:控制器怎麼寫?
public function store(Request $request){ $respondent= new Respondent; $respondent->name = $request->name; $respondent->email = $request->email; $respondent->save(); $sport = new Sport; //接下來怎麼寫? return redirect()->action('RespondentController@index');}
使用laravel的多對多關聯模型插入方法。
擷取受訪者(respondents)的id:1)如果有登入,應該從session中獲得;2)如果是即時建立的話,那建立就行了。說一下第二種方法
respondents與sports要建立多對多的關聯關係。
public function store(Request $request) { $params = $request->all(); $respondent= new Respondent; $respondent->name = $params['name']; $respondent->email = $params['email']; $respondent->save(); $respondent->sports()->attach($params['sportd_ids']);}
沒用過Laravel
,不過像這種關係的儲存資料,邏輯通的話還是很好寫的;
先插入這張respondents
使用者表,擷取到插入的id
並儲存;
然後後台接收到sports
的值是一個數組,然後以sports
數組foreach
,用剛才插入的使用者id
和喜歡的運動value
值組合成sql
語句迴圈插入到sport_respondent
中
以上。