【问题标题】:How to update model column with more than one input如何使用多个输入更新模型列
【发布时间】:2013-09-11 18:34:32
【问题描述】:

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

【问题讨论】:

    标签: php mysql laravel laravel-4


    【解决方案1】:

    Laravel 不会理解您只想从数组中创建模型的各种新实例,因此对于每个服务,您必须为每个服务创建一个单独的模型实例,例如。

    $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>
    

    然后在控制器中循环选择服务:

    foreach(Input::get('services') as $service)
    {
        $service = new Service();
    
        $service->userID = $user->id;
        $service->services = $service;
    
        $service->save();
    }
    

    ...这没有经过测试,我不知道您的数据格式是什么,但应该让您开始解决问题..

    【讨论】:

    • 看起来这样做了..我不得不稍微改变一下。但现在我有另一个问题。如果输入为空白,我不希望它使用用户-> id 与我拥有的输入量进行更新
    • 酷!这应该不会太糟糕.. 看看 Eloquent Validation! :)
    猜你喜欢
    • 2016-06-14
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2018-12-22
    相关资源
    最近更新 更多