php - Doctrine 模型数组数据类型

标签 php doctrine-orm orm doctrine

我是 Doctrine 的新手,我正在尝试制作 MongoDb 模型/集合。我有一个字段languages,它应该是数组。像这样的数组:

$var = [
        array("fname"=>"test","lname"=>"test"),
        array("fname"=>"test","lname"=>"test"),
        array("fname"=>"test","lname"=>"test"),
    ];

但是我的类型声明似乎不起作用。我有:

<?php


namespace RemoteStaff\Documents;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/**
 * Class CandidateAsl
 * @package RemoteStaff\Documents
 * @ODM\Document(db="prod", collection="candidates_asl")
 */
class CandidateAsl
{
    /**
     * Constructor class
     */
    public function __construct(){
        $this->languages = new ArrayCollection();
    }

    /**
     * @var String
     * @ODM\Id(strategy="AUTO", type="string")
     */
    protected $_id;

    /**
     * @var string
     * @ODM\Field(type="string", name="gender")
     */
    private $gender;

    /**
     * @var \DateTime
     * @ODM\Field(type="date", name="birthdate")
     */
    private $birthdate;

    /**
     * @var string
     * @ODM\Field(type="string", name="nationality")
     */
    private $nationality;

    /**
     * @var string
     * @ODM\Field(type="string", name="permanentAddress")
     */
    private $permanentAddress;

    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     */
    private $languages = [];
}

如何在 Doctrine 模型中声明或设置数组字段?

我已阅读文档 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html并尝试过

   /**
     * @var array
     * @ODM\Field(type="array", name="languages")
     */
    private $languages = [];

    /**
     * @return mixed
     */
    public function getLanguages()
    {
        return $this->languages;
    }

    /**
     * @param mixed $languages
     */
    public function setLanguages($languages)
    {
        $this->languages = $languages;
    }

我收到指定的“数组”类型无效。

最佳答案

MongoDB ODM 不支持数组字段类型。请改用 hashcollection

来自documentation :

  • collection: numerically indexed array to MongoDB array

  • hash: associative array to MongoDB object

关于php - Doctrine 模型数组数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41629359/

相关文章:

php - 用于散列 8-16 字节字符串的非常快的散列函数

php - Codeigniter 3 session 驱动程序。使用数据库还是文件更好?

php - 无法使用 symfony 和 doctrine 及其关联对象或表保存到 postgresql 中?

php - 我可以在学说 ORM 中使用准备语句吗

php - Symfony2 表单类型实体无预加载

java - 使用 EclipseLink 在 JPA、hibernate 中重命名 persistence.xml 时出现问题

mysql - Beego QueryRows 映射失败

java - Hibernate:使用别名获取列

php - 使用 PHP SDK 登录 Facebook 应用程序无法正常工作 : The domain of this URL isn't included in the app's domains

javascript - onclick 如何发布到新页面?