教义:将模型值设置为数组

Posted

技术标签:

【中文标题】教义:将模型值设置为数组【英文标题】: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 忽略另一个键。 目的是,我不想在更新模型之前过滤我的数组。

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

【问题讨论】:

【参考方案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();

【讨论】:

我认为您误解了这个问题。他正在尝试创建一条新记录,实例化模型并从数组中设置值。你没有给他任何接近那个的方法。很抱歉投了反对票,让其他人知道这不是一个有用的答案。

以上是关于教义:将模型值设置为数组的主要内容,如果未能解决你的问题,请参考以下文章

将选项值设置为数组

教义:设置主键

教义简单数组/数组转换为postgres int数组?

当 Symfony 教义对象的一个​​属性发生变化时更新另一个属性

教义2多对多带翻译

从 MySQL 设置一个数组,然后将每个值设置为变量 PHP