问题标签 [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.
laravel - 如何将自动增量设置为非主键?
如何在创建方法上设置不是主键的数据库自动增量字段?
唯一的方法是使用原始查询?
DB::statement('ALTER TABLE table CHANGE field field INT(10)AUTO_INCREMENT');
laravel - laravel 迁移在不是主要的时候使用自动增量
我正在尝试使用 Laravel 迁移创建一个表,但我遇到了一些麻烦。我只需要创建一个带有主对('user_id' 和'media_id')的表,'inc' 是一个自动增量。我可以在 MySQL 中做到这一点,但我无法用 Laravel 迁移做到这一点,因为 increments() 也将该字段设置为主要字段。我得到的错误
这就是我到目前为止所做的
laravel - Laravel 数据库迁移 Schema builder 自定义列类型
我正在尝试使用 Laravel 创建迁移,但我需要自定义列类型,因为我想要的列类型不包含在模式生成器中,即“POLYGON”。所以我想知道,除了模式构建器中已经存在的列类型之外,我如何创建我的自定义列类型。
我想要的在 SQL 语句中看起来像这样:
更改表
xxx
添加polygon
POLYGON 不为空
是否可以自己完成,或者我被迫使用这样的库?
我知道我可以这样做:
但这导致我错误地认为该表不存在。
laravel - 使用 Laravel 在 SQL Server 中添加 varchar 列类型
我正在使用 Laravel 5.7 和 SQL Server 2017,我想生成一个varchar(50)
名为name
.
执行此代码给了我一个nvarchar(50)
代替:
如何区分创建varchar
或nvarchar
字段?
laravel-5 - Laravel 5.8 Schema添加外键不起作用
我正在尝试在 Laravel 5.8 中创建外键,当我使用 Artisan 迁移表时,未设置外键。在cities
table和provinces
table中,所有的id字段都是无符号整数。我在 Windows 10 上使用 wamp64。
php - 在 Laravel 中从数据库存储和加载 JSON 的最佳方法
我正在尝试将 json 存储到数据库中并将其加载回来
我试图存储
它存储正确。我检查了数据库,它显示正确。
{姓名:“约翰”,年龄:31,城市:“纽约”}
我一直在看风景
这是我的代码。
对我有什么提示吗?
可在此处重现
https://www.bunlongheng.com/paste
试试#2
如果我这样做
在我看来,我只有这 1 行
我得到的数据与我现在提交的数据相同。
但是浏览器将其检测为文本,而不是响应 JSON,这违背了我想要做的事情的目的。
试试#3
结果
试试#4
看法
结果
尝试#5
我认为问题在于存储......而不是加载和渲染。
我试过
我的 JSON 解析器检测到它......
这是我以前储存的
尝试#6
对于那些怀疑我的数据/内容的人
我尝试在 Pastebin 中粘贴同一行
已清理完毕,您可以在下面看到。
php - 我可以在不先选择数据库的情况下使用 Laravel 的 Schema::createDatabase() 吗?
我这里有一点鸡和蛋的问题。我正在 Laravel 中构建一个多租户应用程序,每个租户在 Postgrsql 服务器上都有自己的数据库。所以我有一份工作来创建一个新租户,它调用:
所以$this->tenant->getDatabaseConnection()
选择一个租户数据库服务器来添加租户并返回那个服务器的连接名称。然后$this->tenant->getDatabaseName()
将返回该租户的数据库名称字符串。
我遇到了一个小问题。这会引发异常:
SQLSTATE[08006] [7] 致命:数据库“port=5432”不存在(SQL:创建数据库“local_tenant_(id)”编码“utf8”)
这是因为默认情况下连接的数据库名称为空。当用户登录到他们的租户时,我们会动态地将租户模型中的 getDatabaseName() 注入其中。
但我不能在这里这样做,因为租户数据库还不存在。所以这里是我看到的选项:
在创建新租户的数据库时,选择服务器上现有租户的随机数据库“充当”。我真的不喜欢像这样暂时劫持另一个租户的数据库,即使这对那个租户应该有 0 的副作用。如果它是在服务器上配置的第一个租户,则没有可使用的现有数据库,这使得这在我的书中单独使用是不可行的。
我可以只使用 DB 提供程序 API 来创建租户数据库。这将是迄今为止最简单的,但会在本地和测试环境中中断,因此我想避免。
我可以绕过 Laravel 并为此建立与数据库的直接 PDO 连接,但如果我找不到更好的东西,我会说这是我最后的手段。
从技术上讲,您不必选择一个数据库来使用创建数据库命令。这是 Laravel 的 Schema Builder 的一个特性,它会在调用方法之前尝试选择一个 DB(在本例中为 CreatedDatabase)。有没有办法解决这个问题,所以我可以在没有 Laravel 首先尝试选择空数据库的情况下创建数据库?
laravel - 更新现有列的数据并使用迁移复制数据
是否可以添加一个新列,将一些数据复制到这个新列并使用 Laravel 迁移更新另一列中的数据?
我有一张这样的桌子;
ID | 物品 | 价格 |
---|---|---|
1 | 项目一 | 100.00 |
2 | 项目二 | 200.00 |
现在我需要做的是,
old_price
向此表添加一个新列- 将列中的值复制
price
到新添加的old_price
列 - 将列中的值乘以
price
5 并更新同一列
新表应如下所示;
ID | 物品 | 价格 | 旧价格 |
---|---|---|---|
1 | 项目一 | 500.00 | 100.00 |
2 | 项目二 | 1000.00 | 200.00 |
是否有可能通过迁移或种子或其他方式来实现这一目标?
此更改需要在已经投入生产的应用程序上完成,因此删除和重新创建表对我来说不是一个选项。
此外,old_price
创建列只是为了保持对price
列当前值的引用。在此之后将不会更新,如果新价格一切正常,它可能会在以后的更新中被删除。所以我之后不需要使用任何模型事件来更新列。
非常感谢您对此提供的任何帮助。谢谢。