【问题标题】:add a row to a model向模型添加一行
【发布时间】:2012-04-06 20:20:38
【问题描述】:

我想填充一个空模型并将模型保存在 blob 字段中以供以后使用。我的问题是我找不到如何向空模型添加另一行。

这行得通:

$test = LineItem::model();
$test->item_id = '2';

这不起作用

$test->1->item_id = '3';

$test->item_id[1] = '3';

我曾尝试查看 Yii 文档,但找不到答案。

谢谢

澄清 我试图使用真实表的模型创建一个假表。我正在开发一个发票系统,我不想在“关闭”之前将行项目或发票正文信息正确地发送到数据库。相反,我想填充相应的模型,然后将其序列化并存储在 BLOB 字段中。发票完成后,数据将写入表中。

【问题讨论】:

  • 我不确定您这样做的方式是否正确。序列化模型行,将其插入内存数据库中的 BLOB 听起来很麻烦 - 我认为将其写入真正的数据库行会更好,但有一个 is_closed 可以设置的布尔列当发票关闭时。
  • @halfer,感谢您的建议。我现在实际上正在这样做,但它导致没有连续的发票号码的问题。如果窗口关闭或发票未完成,它将在数据库中打开。我希望避免这种情况。我还想使用上述方案作为更改的跟踪和存档方法。周末想一想,我可能会回到我以前的数组方案并放弃使用数据库的模型。
  • 我认为只要用户没有明确关闭它,它就可以在数据库中“打开”。如果您的问题是发票编号应该是连续的,而目前不是,那么我想知道您是否尝试使用主键作为公共发票编号?我认为这可能不是最好的解决方案;主键和外键用于参考完整性,而不是用于人类参考。为您的顺序客户发票编号添加另一列(如果适用,则带有唯一约束) - 如果适用于您的 ERD,使其可为空,因此只有真正的发票(“已关闭”?)得到一个。
  • @halfer.. 感谢您的建议.. 我使用表格 PK 作为可见发票编号,但我喜欢第二列保存可见发票编号的想法。

标签: php model yii


【解决方案1】:

你应该使用

$test = new LineItem;

而不是

$test = LineItem::model();

用于 INSERT 查询。并设置属性后

$test->save();

在每次迭代中也是如此。

【讨论】:

  • 感谢您的回答,但不是我要查找的内容。我只需要在模型中添加一行,而不是将其保存到数据库中。 IE 我想使用模型创建一个内存表。
  • 哦,对不起。但我认为这些操作是数据库引擎的责任,而不是 ORM。
猜你喜欢
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2013-07-16
  • 2013-04-21
  • 2016-08-31
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多