2013-05-31 2 views
2

Я начинаю с Laravel, и я застрял с моим кодом. Я хотел бы сохранить параметры и данные моего сайта в базе данных, и то, что я застрял, я не знаю, как обновлять несколько строк, может быть, моя структура базы данных тоже не лучшая.Laravel обновить несколько строк

Database

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')) }} 

Я знаю, что это не самое лучшее, но я стараюсь. Может ли кто-нибудь дать мне подсказку с несколькими обновлениями?

Я пытался, но я потерял

+0

обновление нескольких строк .... нормально. но каковы критерии для обновления? то вопрос заканчивается несколькими вставками .... отлично! – itachi

ответ

-2

Вы можете перебрать строки и сохранить их.

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

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

$content->save(); 
+1

неверно, вы обновляете несколько столбцов, а не несколько строк. – cawecoy

+0

, который обновляет столбцы в одной строке –

2

Вы можете создать запрос, что-то вроде этого:

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

В обновлении вы можете передать массив полей с его значением, которое вы хотите обновить для всех выбранной строки.

0

О, я хочу знать, что это может повлиять на количество запросов

$inputs = Input::all(); 

foreach($inputs as $key => $value) 
{ 
    $content = Content::find($id); 
    $content->$key = $value; 
    $content->save(); 
} 
0

Дубликат таблицы назначения, назовите его «mytable_insertbypass», trunca перед операцией, а затем вставить оптимизировано, после вставки, сделать запрос для обновления :

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

Favaloro правило;)

+0

3 года .... 0.o извините! –

Смежные вопросы