【问题标题】:Kohana 3.2 ORM multiple records updateKohana 3.2 ORM 多条记录更新
【发布时间】:2012-05-02 07:46:25
【问题描述】:

如何更新 Kohana 3.2 的 ORM 中的多条记录?

例如:

$menu = ORM::factory('menu');
$menu->where('active','=',1);
$menu->active=2;
$menu->save();

不起作用,它会插入一条新记录。

谢谢

【问题讨论】:

  • 您是否有任何理由希望使用 ORM 而不是查询构建器来执行此操作?
  • 因为应用程序已经在使用“Model_Menu extends ORM”类了。
  • 这不是论据。 Kohana 的 ORM 基于查询构建器,因此它仅支持查询构建器功能的子集。使用原始查询构建器,您将能够使用单个 SQL 查询设置您需要的内容,而不是为每条记录使用单独的查询。这里使用 ORM 而不是查询构建器的唯一合理论点是:1)可读性问题(在 ORM 层而不是较低的查询构建器层上执行任务),2)模型中包含的自定义业务逻辑(例如,在 save() 方法中)。这是哪一种?
  • 感谢您提供的信息很有帮助。我将重写模型。
  • 我没有提议重写模型 - 我只是说它们可能会有所帮助,但在这方面使用 Kohana 的查询构建器可能更有效。 ORM 只是一个抽象层——如果你需要它,那就不要切换。我们的详细信息太少,无法为您提供帮助。

标签: kohana


【解决方案1】:

如果您不想硬编码表名,可能如下所示

DB::update(ORM::factory('menu')->table_name())
->set(array('active' => '2'))
->where('active', '=', '1')
->execute();

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 2012-03-08
    相关资源
    最近更新 更多