【问题标题】:How to use foreach loop in sql queries in laravel如何在 laravel 的 sql 查询中使用 foreach 循环
【发布时间】:2020-07-09 17:24:35
【问题描述】:

我不知道号码。表中的列。我可以像这样从查询中获取列列表

$data = DB::getSchemaBuilder()->getColumnListing(table);

现在,我想将表单请求中的值插入到此表中。我将这些值存储在一个对象值中。

foreach($data as $key => $data){ 
            $value = $_GET["$data"];}

然后我使用了下面的 sql 查询

DB::insert("INSERT INTO `$table` foreach ($data as $data){ (`$data`) } VALUES foreach ($value as $value){ ('$value') }");

请更正这里写的sql查询

【问题讨论】:

    标签: sql laravel mariadb laravel-6


    【解决方案1】:

    在 laravel 中你可以使用 DBtable 函数:

    DB::table('users')->insert(
        ['email' => 'john@example.com', 'votes' => 0]
    );
    

    为您的代码:

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

    Laravel-Database: Query Builder / Inserts

    【讨论】:

      【解决方案2】:

      你不能在 sql 级别做你想做的事情,你需要构建一个你想要插入的键/值数组。

      $insertValues = [];
      foreach($data as $key => $columnName){ 
        $inserValues[$key] = $_GET[$columnName];
      }
      
      DB::table($table)
         ->insert($insertValues);
      

      您还应该重新检查您对 $_GET 的使用。 Laravel 可以轻松地将请求对象注入控制器并从中检索发布/放置的数据。 https://laravel.com/docs/master/requests

      例如$request->input($columnName); 而不是 $_GET[$columnName]

      我希望这会有所帮助!

      【讨论】:

      • 非常感谢,但这仍然存在问题,列名现在是 0,1,2,.... .你能帮助我吗。提前致谢
      • dd(DB::getSchemaBuilder()->getColumnListing(table)); 的输出是什么?
      • dd 完美运行,所有列名都被转储了。
      • $insertValues = []; foreach($data as $key => $columnName){ $insertValues[$key] = $_GET[$columnName]; } $columns = []; foreach($data as $key => $data){ $columns[$key] = $data; DB::table($table) ->insert([$columns => $insertValues,]);我使用了上面的代码,它返回了非法偏移类型错误
      猜你喜欢
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      相关资源
      最近更新 更多