当前位置:Gxlcms > PHP教程 > Laravel:这个调研问卷的demo的控制器保存方法怎么写?

Laravel:这个调研问卷的demo的控制器保存方法怎么写?

时间:2021-07-01 10:21:17 帮助过:20人阅读

用的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,不过像这种关系的保存数据,逻辑通的话还是很好写的;

  1. 先插入这张respondents用户表,获取到插入的id并保存;

  2. 然后后台接收到sports的值是一个数组,然后以sports数组foreach,用刚才插入的用户id喜欢的运动value值组合成sql语句循环插入到sport_respondent

以上。

人气教程排行