我在表中有这些列:
- 身份证
- 名称
- 地位
- 类型
状态应为0
或1
。
- 0表示不活动
- 1表示不活动。
我想在我的物品列表中添加status_name
字段。这可能吗?
$items = Item::where('type', 'test');
if(item.active == 1)
{
// add new column status_name="active"
}
else
{
// add new column status_name="inactive"
}
$items->get();
我不想使用循环。有没有什么方法可以不使用循环而只使用这个查询。
5条答案
按热度按时间fnatzsnv1#
如果不允许循环数据,可以使用generated columns和MySQL enumerations。
创建迁移将列添加到表中
使用storedgenerated列如下:
或虚拟生成列为:
注意枚举值的顺序很重要,可以在SQL语句中使用枚举值的索引而不是那些字符串值
您不需要在更新或插入中包含
status_name
,它将自动设置希望对大家有所帮助
b91juud32#
您需要循环遍历items集合并应用您的条件,如下所示:
4smxwvx53#
在这个例子中,我想把一个名为
curbsidePickup
的VARCHAR
字段(包含“true”或“false”(字符串))转换成一个名为pickup
的TINYINT
字段,使其成为原子的。为此,在删除旧字段之前,必须迭代所有项:bihw5rsg4#
要根据列的值将计算列添加到结果中,只需使用数据库的
IF()
函数即可:另一个选项是更改模型,以便所有示例都包含计算值:
amrnrhlw5#
使用迁移在表中添加字段
在控制器中