【问题标题】:How can I store request array without using foreach in Laravel?如何在 Laravel 中不使用 foreach 存储请求数组?
【发布时间】:2019-04-11 10:58:21
【问题描述】:

我在 post 请求中有一个数组,例如:

$data = array(
    array('title'=>'1st title', 'desc'=>'desc'),
    array('title'=>'2nd title', 'desc'=>'desc'),
    array('title'=>'3rd title', 'desc'=>'desc'),
)

在 Laravel 中有没有使用 Eloquent 的方法我可以在不使用 foreach 的情况下保存上述数据?请注意,我在请求中获得的数组键与表的列名不同。

【问题讨论】:

  • 不是,有点不一样,请再看描述。
  • 那么您能告诉我们与请求键相关的列名是什么,以便我们将其映射到吗?
  • 请求数组有'title'键,db列是article_title。其他四列也是如此,我想我仍然需要运行一个 foreach 来根据表模式制作映射数据。

标签: php laravel eloquent


【解决方案1】:

希望对你有帮助

$data = [
    ['title' => '1st title', 'desc' => 'desc'],
    ['title' => '2nd title', 'desc' => 'desc']
    .....
];

DB::table('users')->insert($data);

将所有要插入的值放入一个数组中,然后将其传递给插入函数。

来源:https://laravel.com/docs/5.1/queries#inserts

【讨论】:

  • 我相信数组键必须是表列名,在我的情况下,列名与数组键不同,并且要制作上述数组,我想我仍然需要运行一个 foreach .
  • 如果key不同yes,需要使用foreach
【解决方案2】:

试试这个:

DB::table('table_name')->insert($data);

【讨论】:

    【解决方案3】:

    使用 eloquent:正如 Sethu 所提到的,但几行将是:

    Model::insert($data); // eg: Posts::insert($your_request_array);
    

    这里直接传入数组即可:上面成功返回true。

    【讨论】:

      猜你喜欢
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2021-04-28
      相关资源
      最近更新 更多