【问题标题】:How to insert raw data in mysql database in laravel如何在laravel的mysql数据库中插入原始数据
【发布时间】:2014-06-16 05:41:38
【问题描述】:

我是 laravel 开发的大一新生。 我使用 mysql 数据库,并想在数据库中插入原始数据。我用$table->binary() 添加列。以及如何将数据插入列。

Schema::table('users', function($table)
{
    $table->binary('raw');
});

【问题讨论】:

  • Laravel 使用 MVC 范式。数据库应该通过模型进行更新。因此,通过用户提交的视图,假设一个新用户,控制器获取发布请求并将数据传递给模型,模型更新数据库。这并不能回答你的问题,但会给你学习 Laravel 的基础。

标签: php mysql laravel


【解决方案1】:

试试这个:

假设您有以下表格(称为“用户”)

id|user|fname|lname|email|etc..
-------------------------
1|jdoe|john|doe|jdoe@example.com|blah....

DB::table('users')->insert(
    array('user' => 'jdoe',
          'fname' => 'john',
          'lname' => 'doe',
          'email' => 'jdoe@example.com')
);

insert() 接受多个数组(依次可以映射到表中的各个列)。

我希望这是你需要的。

基于此文档: http://laravel.com/docs/queries#inserts

【讨论】:

    【解决方案2】:

    您可以将这种方式用于原始插入(我在 laravel/Lumen 8 上对此进行了测试):

    DB::insert('insert into users (email, votes) values (?, ?)', ['john@example.com', '0']);
    

    【讨论】:

      【解决方案3】:

      你可能想看看 Eloquent,这是 Laravel 使用的默认 ORM。它使数据库变得非常容易。有些人可能会有不同的想法,但这可以通过接口和存储库来解决。

      Laravel 使用 MVC 范式。数据库应该通过模型进行更新。因此,通过用户提交的视图,假设是一个新用户,控制器获取发布请求并将数据传递给模型,模型更新数据库。

      假设你将使用 Laravel 默认的用户模型。这个模型已经从 Eloquent 扩展而来。您应该已经有一个数据库:

      用户表数据库

      id, auto_increment
      username, varchar(255)
      password, varchar(255)
      email, varchar(255)
      created_at (datetime)
      updated_at (datetime)
      

      app/models/User.php

      class User extends Eloquent implements UserInterface, RemindableInterface {
      

      app/controllers/HomeController.php

      public function showWelcome()
      {
         $user = new User;
         $user->username = 'johndoe';
         $user->email = 'john@johndoe.com';
         $user->password = 'password';
         $user->save();
         return View::make('hello');
      }
      

      如果您已正确设置数据库并迁移了 User 表,这应该可以工作,并为您在 Laravel 中与数据库进行交互提供了一个良好的起点。这不是向数据库添加数据的首选方式,因为此操作不应该放在控制器内部,但这将是下一步。我是通过这种方式开始学习 Laravel 的,它确实可以帮助你正确理解框架。

      PS:

      DB::query('insert into users (username, email, password) values ("johndoe", "john@johndoe.com", "password")');
      

      这非常不安全并且容易受到 SQL 注入的影响,但 Laravel 提供了解决方案,也适用于原始查询。

      【讨论】:

        【解决方案4】:

        如果你想部分原始查询,你可以这样做

        DB::('table')
        ->insert([
           'id'=>1,
           'date'=>DB::raw('CURDATE()')
        ]);
        

        【讨论】:

          猜你喜欢
          • 2018-08-06
          • 2012-11-16
          • 2015-09-13
          • 1970-01-01
          • 2016-03-19
          • 2018-02-27
          • 2022-08-11
          • 2011-08-06
          • 2020-03-09
          相关资源
          最近更新 更多