2

私は Laravel の初心者で、自分のコードに行き詰まっています。サイトのオプションと詳細をデータベースに保存したいのですが、複数の行を更新する方法がわからないため、データベース構造が最適ではない可能性があります。

データベース

id | option_name      | option_value
1  | site_name        | Website name
2  | site_slogen      | Website slogen
3  | site_description | Website description
4  | post_per_pages   | 20

私のフォーム

{{ Form::open('admin/options', 'POST', array('class' => 'span5 no-float centered')) }}

    @foreach($options as $option)

        <?php $name = str_replace('_', ' ', ucfirst($option->option_name)); ?>

        {{ Form::label($name, $name) }}
        @if($option->option_name == "site_description")
            {{ Form::textarea($option->option_name, $option->option_value, array('class' => 'input-block-level', 'rows' => '5')) }}
        @else
            {{ Form::text($option->option_name, $option->option_value, array('class' => 'input-block-level')) }}
        @endif

        {{ $errors->has($option->option_name) ? '<p class="val_error">' .$errors->first($option->option_name). '</p>' : '' }}

        {{ Form::hidden('id[]', $option->id) }}
    @endforeach

     {{ Form::button('Update options', array('class' => 'btn btn-primary btn-block')) }}

私はそれが最善ではないことを知っていますが、私は試しています. 誰かが複数の更新でヒントをくれますか?

やってみたけど迷った

4

4 に答える 4

3

次のようなクエリを作成できます。

YourTable::query()->where('YourTableColumn', 'Variable/Field to match against')->update(array('Fiel' => $new_username));

Update では、取得したすべての行に対して更新する値を持つフィールドの配列を渡すことができます。

于 2014-07-24T00:50:13.763 に答える
0

宛先テーブルを複製し、「mytable_insertbypass」という名前を付け、操作の前に切り捨て、最適化された挿入を挿入し、挿入後にクエリを作成して更新します。

UPDATE products, products_insertbypass SET products.price = products_insertbypass.price WHERE products.id = products_insertbypass;

ファバロロのルール ;)

于 2016-10-21T20:46:45.703 に答える
-4

行をループして保存できます。

$inputs = Input::all();
$content = Content::find($id);

foreach($inputs as $key => $value)
{
    $content->$key = $value;
}

$content->save();
于 2013-05-31T18:04:01.303 に答える