0

这是我的问题的解释。

我有通常的表格,我不清楚如何使用一个函数和一个表格在具有相同表格输入的同一个数据库表中输入多行,因为在我的情况下,我有产品的成分,每个成分都应该是数据库中的新行. 我知道的唯一解决方案是一次添加一种成分,但这不是一个好的解决方案......我可能知道如何使用经典的 php 函数解决它,但我不知道使用 laravel 函数,使用 laravel 可能更容易。

这是功能:

  public function post_add()
{

    if(Input::get('submit'))
    {
        $input = Input::all();

        $validation = Validator::make($input);

        if($validation->fails())
        {
            Vsession::cadd('r',  $validation->errors->first())->cflash('status');
        }
        else
        {
            $items['product_weight']          = Input::get('product_weight');
            $items['product_code']          = Input::get('product_code');
            $items['raw_material']          = Input::get('raw_material');


            foreach ($items as $key => $value)
            {
                $items[$key] = ($value !== '') ? trim(filter_var($value, FILTER_SANITIZE_STRING)) : null;
            }
            try
            {

                $id = DB::table('products_ingredients')->insert_get_id(array(
                                        'product_weight'          => $items['product_weight'],
                                        'product_code'          => $items['product_code'],
                                        'raw_material'          => $items['raw_material'],
                ));
            }
            catch(Exception $e)
            {
                Vsession::cadd('r',  __('error'))->cflash('status');
                return Redirect::to_action('products@add');
            }

            Vsession::cadd('g', __('error'))->cflash('status');
            return Redirect::to_action('products@add');
        }
    }

    return $this->get_add();
}

并添加.php

    <?php
echo Form::text('product_weight', Input::get('product_weight'));
echo Form::text('product_code', Input::get('product_code'));
echo Form::text('raw_material', Input::get('raw_material'));
?>

但我需要多次重复输入,如下所示:

    <?php
echo Form::text('product_weight', Input::get('product_weight'));
echo Form::text('product_code', Input::get('product_code'));
echo Form::text('raw_material', Input::get('raw_material'));

echo Form::text('product_weight', Input::get('product_weight'));
echo Form::text('product_code', Input::get('product_code'));
echo Form::text('raw_material', Input::get('raw_material'));

....
?>

我希望我能解释清楚。提前致谢!

4

3 回答 3

0

您可以制作另一个名为 ingrediens 的表:

身份证 | 价值 | prod_id

您可以在那里存储每种产品的所有成分。然后在插入数据时,您可以使用 foreach 并将它们插入循环

希望有用

于 2013-07-05T19:38:53.463 回答
0

重复此代码

<?php
    echo Form::text('product_weight[]', Input::get('product_weight'));
    echo Form::text('product_code[]', Input::get('product_code'));
    echo Form::text('raw_material[]', Input::get('raw_material'));
?>

循环执行它,它应该与您一起使用


我对 laravel 不好,但这里是循环的一个例子

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor

@foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>
@endforeach

@while (true)
    <p>I'm looping forever.</p>
@endwhile
于 2013-07-05T19:51:37.377 回答
0

我认为唯一的解决方案是一点手册......

举个最基本的例子...

<div class="name">
    {{ Form::text('name[]') }}
</div>

如果您使用一些 javascript,您可以根据需要多次复制整个 DIV(使用类似 $('name').clone())

你可以在你的PHP中检索这个......

$names = Input::get('name');
foreach($names as $name){
    //do whatever you want
}

最初的问题是如何使用多个字段(即姓名和年龄)来做到这一点。我能想到的唯一答案是这样的

<div class="person">
    {{ Form::text('persons[ID][name]') }}
    {{ Form::text('persons[ID][age]') }}
</div>

但是每次复制行时都必须设置 ID……必须有更好的方法吗?

于 2015-02-19T05:07:28.583 回答