在多行上插入多个值

时间:2015-03-13 20:17:56

标签: laravel laravel-4

我的表单中有一个下拉列表,用户最多可以选择5个国家/地区。

我有两个相关的表格userscountries,其中每个用户都可以选择多个国家/地区。

users表:

+----+----------+----------------------+
| id | username |     description      |
+----+----------+----------------------+
|  1 | user1    | Some description.    |
|  2 | user2    | Another description. |
+----+----------+----------------------+

countries表:

+----+---------+---------------+
| id | user_id |    country    |
+----+---------+---------------+
|  1 |       1 | Canada        |
|  2 |       1 | United States |
|  3 |       1 | France        |
|  4 |       2 | Spain         |
|  4 |       2 | Italy         |
+----+---------+---------------+

如您所见,国家/地区下拉列表值应在表格中各自有一行。

到目前为止,这是我的UserController(现在只插入users表):

$user = new User;
$user->username = Input::get('username');
$user->description = Input::get('description');
$user->save();

如何插入多个下拉值,使每个下拉值都有自己的行?我的模型应该如何才能起作用?

1 个答案:

答案 0 :(得分:0)

如果你要用口才来做这件事,这里有一个建议:

//在您的用户模型中

public function countries()
{
     return $this->hasMany('Country');
}

//从控制器插入

$countries = json_decode(Input::get('countries'), true); //assuming you use json to submit the multiple countries

$user_countries = array();
foreach($countries as $country)
{
    $user_countries[]=new Country(array('country'=>$country));
}

//save the countries into the DB
$user->countries()->saveMany($user_countries);

有关详细信息,请参阅文档: http://laravel.com/docs/4.2/eloquent#inserting-related-models