【问题标题】:Understanding Laravel migrations with PostgreSQL使用 PostgreSQL 了解 Laravel 迁移
【发布时间】:2016-10-09 08:28:58
【问题描述】:

我正在学习 laravel 5 以及它与数据库的关系。我可以找到大量关于如何使用 sqlite 和 mysql 的信息,但我在理解什么是迁移、它们与数据库的关系以及我的主要问题时遇到了问题...
如果我有一个预先创建的 postgres 数据库,假设有 10 个表及其关系已经启动并运行,我如何让 Laravel 与它们交互?
例如,我的 postgres 模式表定义如下:

CREATE TABLE "users" (
"id" integer NOT NULL DEFAULT nextval('users_seq'),
"name" character varying(30) NOT NULL,
"email" character varying(50) NOT NULL UNIQUE,
"password" character varying(120) NOT NULL UNIQUE,
CONSTRAINT users_pk PRIMARY KEY ("id")
) WITH (
  OIDS=FALSE
);

我已经知道 Laravel 为 users 表提供了通用迁移,但是我应该如何在 Laravel 中连接到我的数据库? 顺便说一句,我的数据库名称是dummy
我可以使用迁移类之类的东西吗?
但据我了解,迁移是为了创建/删除/等表,对吧?
或者我应该像这样直接创建一个控制器来与 de db 交互吗?

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;

class PagesController extends Controller
{
  public function index()
    {
      $users = DB::table('users')->get();
      return view('DBHandler',compact('users'));
    }
}

我想这是查询构建器的处理方式,而 eloquent 的方式完全不同。
任何帮助将不胜感激。

【问题讨论】:

    标签: php database postgresql laravel


    【解决方案1】:

    来自博客laravelbooks.com,引用:

    [...] 迁移是 Laravel 帮助您改进应用程序的数据库模式(也称为 DDL)的方式,而无需在每次进行更改时删除并重新创建数据库。每次发生更改时都不必删除和重新创建数据库,这意味着您不会丢失开发数据。执行迁移时所做的唯一更改是将架构从一个版本移动到另一个版本所必需的更改,无论该移动是在时间上向前还是向后。

    Laravel 迁移不仅为您提供了一种以迭代方式更改数据库架构的方法,而且它还允许您使用 PHP 代码而不是 SQL 来实现这一点! Laravel Schema Builder 允许我们快速创建数据库表并插入列或索引。它使用简洁而富有表现力的语法来进行数据库操作。您可能将 Laravel 迁移视为数据库的版本控制! [...]

    在那里我找到了一种比官方文档更能解释laravel的方法,虽然后面也很好

    【讨论】:

      【解决方案2】:

      根据 Laravel 的文档:

      迁移就像数据库的版本控制,允许团队轻松修改和共享应用程序的数据库架构。迁移通常与 Laravel 的架构构建器配对,以轻松构建应用程序的数据库架构。

      如果您有一个团队与您合作,强烈建议将它们用于必须在方案上应用到应用程序工作的更改,这些迁移允许您将更改应用到数据库,如删除、创建、更新等。另一方面,如果您打算使用已经创建的 Schema 开始开发,那么您可以使用 Eloquent 与您的 scheme 进行交互。

      Laravel 从数据库中获取信息的方式是使用 Eloquent 的 ORM,以下是 Laravel 文档的介绍:

      Laravel 中包含的 Eloquent ORM 提供了一个漂亮、简单的 ActiveRecord 实现来处理你的数据库。每个数据库表都有一个相应的“模型”,用于与该表进行交互。模型允许您查询表中的数据,以及向表中插入新记录。

      因此,您必须为每个表创建一个模型,但多对多表除外。如果您的表是Users,则必须将模型命名为 User,如果不是,Eloquent 会自动使用它,您必须覆盖模型中的 $table 属性,如下所示:

      public $table = 'user';
      

      你可以用 Eloquent 做的其他事情你可以在文档 here 找到它

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-06-11
        • 2014-09-18
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        相关资源
        最近更新 更多