如何使用多个输入更新模型列

时间:2013-09-07 22:17:18

标签: php mysql laravel laravel-4

我正在开发一个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();

1 个答案:

答案 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();
}

...这没有经过测试,我不知道你的数据格式是什么,但是应该给你一个问题的开始..