Laravel: 这个调研问卷的demo的控制器保存方法怎么写?
程序员文章站
2022-05-26 21:53:52
...
用的laravel5.2框架,下面这个调研问卷的控制器怎么写?demo如下:
数据表有3张,1和2多对多关系:
1、respondents //受访者
2、sports //喜欢的运动
3、sport_respondent //关联表
respondents
id name email
sports
id sport_name
1 Basketball
2 Football
3 Table tennis
4 Badminton
5 Baseball
6 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_name
1 Basketball
2 Football
3 Table tennis
4 Badminton
5 Baseball
6 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
中
以上。
下一篇: 让RHEL5下的sqlplus支持回显