我的表单中有一个下拉列表,用户最多可以选择5个国家/地区。
我有两个相关的表格users
和countries
,其中每个用户都可以选择多个国家/地区。
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();
如何插入多个下拉值,使每个下拉值都有自己的行?我的模型应该如何才能起作用?
答案 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