【问题标题】:Doctrine: Set model values as array教义:将模型值设置为数组
【发布时间】:2009-09-16 17:05:29
【问题描述】:

我有一组值要用来更新我的模型。

Doctrine_Access 提供了一个 setArray 函数,它几乎正是我所需要的——除了它关心模型中没有字段的值。我希望那些被忽略。

一个小例子。假设我们有一个包含字段用户名的用户表。

$user = new User();
$user->setArray(array('username'=>'xyz'))->save();

这样行!

$user = new User();
$user->setArray(array('username'=>'xyz','anotherKey'=>'anotherValue'))->save();

那不是。如果没有相关字段,我希望 Doctrine 忽略另一个键。 目的是,我不想在更新模型之前过滤我的数组。

完成这项工作最干净、最简单的方法是什么?

【问题讨论】:

    标签: php orm doctrine


    【解决方案1】:

    Doctrine_Record::fromArray() 解决了它。 不幸的是它没有返回对象,所以它对于方法链接没有用......

    【讨论】:

      【解决方案2】:

      这很有用

      为模型添加查找方法:

      class Address extends Doctrine_Record {
      
          public static function factory() {
              return new Address();
          }
      
      public function findById($id) {
             $findObject = Doctrine::getTable('Address')->findOneByid($id);
             return $findObject;
           }
      ....
      

      并使用它

        $address = Address::factory()
              ->findById(13)->set('name', 'new data')->set('anotherfield','another data')->save();
      

      【讨论】:

      • 我认为您误解了这个问题。他正在尝试创建一条新记录,实例化模型并从数组中设置值。你没有给他任何接近那个的方法。很抱歉投了反对票,让其他人知道这不是一个有用的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      相关资源
      最近更新 更多