我正在开发一个Laravel 4项目,我正在尝试在一个简单的服务表中向服务列添加一堆服务。列格式为:
id userID services price
我希望它能做的是当用户选择服务时,用户选择的所有服务都会被放入服务列中,如下所示:
id userID services price
1 5 clean $4.95
2 5 unload $7.95
3 5 dance $1.95
4 5 vacuum $12.95
5 5 clean $4.95
基本上所有服务都在不同的输入字段中。所以他们没有关系。
我尝试在模型中添加一个数组,但它给出了一个错误:
Array to String conversion
我的控制器的一部分
$service = new Service();
$service->userID = $user->id;
$service->services = array(
Input::get('rooms'),
Input::get('pr_deodorizer'),
Input::get('pr_protectant') .
Input::get('pr_sanitzer'),
Input::get('fr_couch'),
Input::get('fr_chair'),
Input::get('fr_sectional'),
Input::get('fr_ottoman')
);
var_dump($service->services);die;
$service->save();
答案 0 :(得分:1)
Laravel不会理解您只想从数组中创建模型的各种新实例,因此对于每个服务,您必须为每个服务创建一个单独的服务模型实例,例如。 / p>
$service = new Service();
$service->userID = $user->id;
$service->services = Input::get('rooms');
$service->save();
一个想法..也许您可以使用方括号表示法将您的服务分组到表单上的PHP数组中:
<div>
<label for="room">Room</label>
<input type="text" id="room" name="services[]">
</div>
<div>
<label for="pr_deodorizer">Deodorizer</label>
<input type="text" id="pr_deodorizer" name="services[]">
</div>
<div>
<label for="pr_protectant">Protectant</label>
<input type="text" id="pr_protectant" name="services[]">
</div>
然后遍历Controller中的所选服务:
foreach(Input::get('services') as $service)
{
$service = new Service();
$service->userID = $user->id;
$service->services = $service;
$service->save();
}
...这没有经过测试,我不知道你的数据格式是什么,但是应该给你一个问题的开始..