我想在我的“订单”表中添加一个名为“付款类型”的列。
以下是我迄今为止的迁移:
def change
add_column :orders, :payment_type, :string
end
我希望payment_type保持当前在数据库中的所有记录的值“正常”。然而,不是为了将来的记录。我希望未来的记录没有默认值。我该怎么做呢?
def change
add_column :orders, :payment_type, :string
Order.all.each do |order|
order.update_attributes(:payment_type => 'normal')
end
end
我认为最简单的方法是:
class AddStateToSites < ActiveRecord::Migration[5.1]
def up
add_column :sites, :state, :string, default: :complete # sets default value for existed records
change_column :sites, :state, :string, default: nil # changes default value for next
end
def down
remove_column :sites, :state
end
end
之后检查它在控制台:
>> Site.last.state
Site Load (0.6ms) SELECT "sites".* FROM "sites" ORDER BY "sites"."id" DESC LIMIT $1 [["LIMIT", 1]]
=> "complete"
>> Site.new.state
=> nil
由于您只想为所有现有记录设置值,您可以使用update_all
,这比循环遍历所有订单实例要快得多,因为它只使用数据库语句,而不实例化所有订单:
class Order < ActiveRecord::Base
end
def up
add_column :orders, :payment_type, :string
Order.reset_column_information
Order.update_all(payment_type: 'normal')
end
def down
remove_column :orders, :payment_type
end
update\u all
不调用任何验证或触发器。
问题内容: 我不知道如何使用Laravel框架向现有数据库表添加新列。 我试图使用…来编辑迁移文件。 在终端中,我执行和。 如何添加新列? 问题答案: 要创建迁移,您可以在Artisan CLI上使用migration:make命令。使用特定名称以避免与现有模型冲突 对于Laravel 3: 对于Laravel 5+: 然后,您需要使用该方法(在访问现有表而不是创建新表时)。您可以添加如下所示的列
我有一个工作的Java项目,它使用Access.accdb数据库存储数据。我正在为我的程序进行更新,为用户提供更多的功能。为了使其工作,我需要在现有的表中添加一个列,该列填充了数据。当我研究时,我发现UCanAccess不能支持 这是不幸的,但我明白,由于低级别的驱动程序不支持它,UCanAccess也不能支持它。 然后我找到了这个解决办法: 如何使用UCanAccess修改表 但这对我也不起作用
我不知道如何使用Laravel框架将新列添加到现有的数据库表中。 我试图使用…编辑迁移文件。。。 在终端,我执行和。 如何添加新列?
我想在表的第二列中追加 。输出应为 我不想使用,因为我需要在我的实际问题中追加嵌套的div。我制作了同样的小示例。JsFiddle
本文向大家介绍向Pandas中的现有DataFrame添加新列,包括了向Pandas中的现有DataFrame添加新列的使用技巧和注意事项,需要的朋友参考一下 Pandas 数据框是一种二维数据结构,即,数据以表格的形式在行和列中对齐。可以使用python dict,list和series等创建它。在本文中,我们将看到如何在现有数据框中添加新列。因此,首先让我们使用pandas系列创建一个数据框。
我正在表任务中添加新列名标题。但我得到一个错误,该表中不存在此列。谁能帮我解决那个错误。这是我的密码: 然后添加此代码 到创建的新表文件