如何在Laravel中向MySQL数据库插入原始数据

13

我是 Laravel 开发的新手。 我使用 MySQL 数据库,并希望将原始数据插入到数据库中。我使用 $table->binary() 添加了一列,但是如何将数据插入到该列中呢?

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

http://laravel.com/docs/database - Avinash Babu
Laravel使用MVC范例。数据库应该通过模型进行更新。因此,通过视图,用户提交例如新用户的请求,控制器获取POST请求并将数据传递给模型,模型更新数据库。这并没有回答你的问题,但会为你学习Laravel打下基础。 - sidneydobber
4个回答

18

试试这个:

假设您有以下表格(称为“users”):

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


7
如果你想要部分原始查询,你可以这样做。
DB::table('table')
->insert([
   'id'=>1,
   'date'=>DB::raw('CURDATE()')
]);

2
请在冒号后面添加"raw"。 DB::raw('table')->insert(['id'=>1, 'date'=>DB::raw('CURDATE()')]); - Ketan Chaudhari
2
请在冒号后面添加"raw"。 DB::raw('table')->insert(['id'=>1, 'date'=>DB::raw('CURDATE()') ]); - undefined

4
您可以使用以下方式进行原始插入(我在 Laravel / Lumen 8 上进行了测试):
DB::insert('insert into users (email, votes) values (?, ?)', ['john@example.com', '0']);

如何插入多行数据?我添加了更多的数组,但是其余的被忽略了(没有被插入),就像这样:DB::insert('insert into users (email, votes) values (?, ?)', ['john@example.com', '0'],['tim@domain.com', '1'],['Mohammad@mail.com', '2']); - Pathros

2
你可能需要了解一下 Eloquent,这是 Laravel 默认使用的 ORM。它可以使与数据库交互变得非常容易。有些人可能会有不同的看法,但可以通过接口和存储库来解决这个问题。
Laravel 使用 MVC 模式。数据库应该通过模型进行更新。所以,通过视图,用户提交一个新用户时,控制器获取 post 请求并将数据传递给模型,模型更新数据库。
假设你将使用 Laravel 的默认 User 模型。这个模型已经扩展了 Eloquent。你应该已经有一个包含以下内容的数据库:
User 表数据库
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提供了解决方案,包括针对原始查询的处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接