问题标签 [laravel-schema-builder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
13444 浏览

laravel - 如何将自动增量设置为非主键?

如何在创建方法上设置不是主键的数据库自动增量字段?

唯一的方法是使用原始查询?

DB::statement('ALTER TABLE table CHANGE field field INT(10)AUTO_INCREMENT');

0 投票
2 回答
1670 浏览

laravel - laravel 迁移在不是主要的时候使用自动增量

我正在尝试使用 Laravel 迁移创建一个表,但我遇到了一些麻烦。我只需要创建一个带有主对('user_id' 和'media_id')的表,'inc' 是一个自动增量。我可以在 MySQL 中做到这一点,但我无法用 Laravel 迁移做到这一点,因为 increments() 也将该字段设置为主要字段。我得到的错误

这就是我到目前为止所做的

0 投票
2 回答
1021 浏览

laravel - Laravel 数据库迁移 Schema builder 自定义列类型

我正在尝试使用 Laravel 创建迁移,但我需要自定义列类型,因为我想要的列类型不包含在模式生成器中,即“POLYGON”。所以我想知道,除了模式构建器中已经存在的列类型之外,我如何创建我的自定义列类型。

我想要的在 SQL 语句中看起来像这样:

更改表xxx添加polygonPOLYGON 不为空

是否可以自己完成,或者我被迫使用这样的

我知道我可以这样做:

但这导致我错误地认为该表不存在。

0 投票
1 回答
3290 浏览

laravel - 使用 Laravel 在 SQL Server 中添加 varchar 列类型

我正在使用 Laravel 5.7 和 SQL Server 2017,我想生成一个varchar(50)名为name.

执行此代码给了我一个nvarchar(50)代替:

如何区分创建varcharnvarchar字段?

0 投票
1 回答
157 浏览

laravel-5 - Laravel 5.8 Schema添加外键不起作用

我正在尝试在 Laravel 5.8 中创建外键,当我使用 Artisan 迁移表时,未设置外键。在citiestable和provincestable中,所有的id字段都是无符号整数。我在 Windows 10 上使用 wamp64。

0 投票
2 回答
284 浏览

php - 如何优化 Laravel 7 中的查询语句?

我在屏幕截图中显示代码,因为我想向你们展示我的第 43 行

在此处输入图像描述

实际代码在这里:

我参观

如你看到的

Laravel Debugbar 检测到我在线进行了 2 次查询43

在此处输入图像描述

为什么是 2?这是预期的吗?

我可以将其改进为 1 吗?

请指教

0 投票
5 回答
1869 浏览

php - 在 Laravel 中从数据库存储和加载 JSON 的最佳方法

我正在尝试将 json 存储到数据库中并将其加载回来

我试图存储

它存储正确。我检查了数据库,它显示正确。

{姓名:“约翰”,年龄:31,城市:“纽约”}

我一直在看风景

这是我的代码。

对我有什么提示吗?

可在此处重现

https://www.bunlongheng.com/paste


试试#2

如果我这样做

在我看来,我只有这 1 行

我得到的数据与我现在提交的数据相同。

但是浏览器将其检测为文本,而不是响应 JSON,这违背了我想要做的事情的目的。


试试#3

结果


试试#4

看法

结果


尝试#5

我认为问题在于存储......而不是加载和渲染。

我试过

我的 JSON 解析器检测到它......

在此处输入图像描述

这是我以前储存的


尝试#6

对于那些怀疑我的数据/内容的人

我尝试在 Pastebin 中粘贴同一行

在此处输入图像描述

已清理完毕,您可以在下面看到。

https://pastebin.com/raw/r9akUK1v

0 投票
1 回答
126 浏览

php - 我可以在不先选择数据库的情况下使用 Laravel 的 Schema::createDatabase() 吗?

我这里有一点鸡和蛋的问题。我正在 Laravel 中构建一个多租户应用程序,每个租户在 Postgrsql 服务器上都有自己的数据库。所以我有一份工作来创建一个新租户,它调用:

所以$this->tenant->getDatabaseConnection()选择一个租户数据库服务器来添加租户并返回那个服务器的连接名称。然后$this->tenant->getDatabaseName()将返回该租户的数据库名称字符串。

我遇到了一个小问题。这会引发异常:

SQLSTATE[08006] [7] 致命:数据库“port=5432”不存在(SQL:创建数据库“local_tenant_(id)”编码“utf8”)

这是因为默认情况下连接的数据库名称为空。当用户登录到他们的租户时,我们会动态地将租户模型中的 getDatabaseName() 注入其中。

但我不能在这里这样做,因为租户数据库还不存在。所以这里是我看到的选项:

  1. 在创建新租户的数据库时,选择服务器上现有租户的随机数据库“充当”。我真的不喜欢像这样暂时劫持另一个租户的数据库,即使这对那个租户应该有 0 的副作用。如果它是在服务器上配置的第一个租户,则没有可使用的现有数据库,这使得这在我的书中单独使用是不可行的。

  2. 我可以只使用 DB 提供程序 API 来创建租户数据库。这将是迄今为止最简单的,但会在本地和测试环境中中断,因此我想避免。

  3. 我可以绕过 Laravel 并为此建立与数据库的直接 PDO 连接,但如果我找不到更好的东西,我会说这是我最后的手段。

从技术上讲,您不必选择一个数据库来使用创建数据库命令。这是 Laravel 的 Schema Builder 的一个特性,它会在调用方法之前尝试选择一个 DB(在本例中为 CreatedDatabase)。有没有办法解决这个问题,所以我可以在没有 Laravel 首先尝试选择空数据库的情况下创建数据库?

0 投票
1 回答
852 浏览

laravel - 更新现有列的数据并使用迁移复制数据

是否可以添加一个新列,将一些数据复制到这个新列并使用 Laravel 迁移更新另一列中的数据?

我有一张这样的桌子;

ID 物品 价格
1 项目一 100.00
2 项目二 200.00

现在我需要做的是,

  1. old_price向此表添加一个新列
  2. 将列中的值复制price到新添加的old_price
  3. 将列中的值乘以price5 并更新同一列

新表应如下所示;

ID 物品 价格 旧价格
1 项目一 500.00 100.00
2 项目二 1000.00 200.00

是否有可能通过迁移或种子或其他方式来实现这一目标?

此更改需要在已经投入生产的应用程序上完成,因此删除和重新创建表对我来说不是一个选项。

此外,old_price创建列只是为了保持对price列当前值的引用。在此之后将不会更新,如果新价格一切正常,它可能会在以后的更新中被删除。所以我之后不需要使用任何模型事件来更新列。

非常感谢您对此提供的任何帮助。谢谢。