Laravel Eloquent或DB中的批量更新

时间:2014-05-01 04:52:09

标签: mysql laravel-4 sql-update

是否有人知道如何在没有在一个查询字符串中执行此操作的情况下执行此操作。我的意思是我在网上看到的流行方式是循环数据(更新)并生成单个更新语句然后触发查询。没有循环的Eloquent Approach或DB是否可能?

2 个答案:

答案 0 :(得分:0)

这可以通过Eloquent实现,可能需要启用质量分配,但如果是这样,您将收到错误。

$post_data = Input::all();
$model = Model::find($id);
$model ->fill($post_data);
$model ->save();

$post_data = Input::all();
Model::find($id)->update($post_data);

答案 1 :(得分:0)

是的,您可以这样做,但是在那种情况下,您必须使数据数组成为循环,以便将数据存储在具有表的field_name => value的数组中。

以下是示例:

    $Array = array(); //This is needed to hold data while looping over $YourData

    $YourData - is the array of data you want to store in the respective table.

    foreach ($YourData as $YourDatakey => $YourDatavalue ){

    $Array = [
             'table_column_name' => $YourDatavalue['value_from_array'],
             'table_column_name' => $YourDatavalue['value_from_array'],
             'table_column_name' => $YourDatavalue['value_from_array'],
             ...... and so on
             ];

    }
$InsertQuery= YourModelName::create($Array);

PS:

  1. YourModelName模型文件应在protected $fillable = ['column1','column2'....];

  2. 中具有列
  3. 您应该use App\Models\ModelName;位于文件顶部。