【问题标题】:inserting foreign key via doctrine entity?通过学说实体插入外键?
【发布时间】:2012-04-20 18:03:39
【问题描述】:

我正在使用 Doctrine2+CodeIgniter2,并且正在尝试创建一个连接表的简单测试。

这是我所涉及的两个表的架构:

CREATE TABLE test_lastnames (id INT AUTO_INCREMENT NOT NULL, last_name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB;

CREATE TABLE test_firstnames (id INT AUTO_INCREMENT NOT NULL, mylastname_id INT DEFAULT NULL,first_name VARCHAR(255) NOT NULL, 索引 IDX_23D7305696EC0FA4 (mylastname_id), 主键 (id)) 引擎 = InnoDB;

ALTER TABLE test_firstnames 添加约束 FK_23D7305696EC0FA4 FOREIGN KEY (mylastname_id) REFERENCES test_lastnames (id)

这是我的 YAML 映射

ORM\Testing\Firstnames:
  type: entity
  table: test_firstnames
  fields:
    id:
      type: integer
      id: true
      generator:
        strategy: AUTO
    firstname:
      type: string
      column: first_name
  manyToOne:
    mylastname:
      targetEntity: ORM\Testing\Lastnames

ORM\Testing\Lastnames:
  type: entity
  table: test_lastnames
  fields:
    id:
      type: integer
      id: true
      generator:
        strategy: AUTO
    lastname:
      type: string
      column: last_name

我正在尝试将数据写入表中。

$new_lastname = new ORM\Testing\Lastnames;
$new_lastname -> setLastName ('Shakespear');
$this->doctrine->em->persist($new_lastname);
$this->doctrine->em->flush();

$new_firstname = new ORM\Testing\Firstnames;
$new_firstname->setFirstname('William');
$new_firstname->setMyLastName($new_lastname ->getID());
$this->doctrine->em->persist($new_firstname);
$this->doctrine->em->flush();

它返回以下错误:

消息:传递给 ORM\Testing\Firstnames::setMylastname() 的参数 1 必须是 ORM\Testing\Lastnames 的实例,给定整数,在 /[PATH]/applicationFolder/controllers/testing/test_namejoins_insert.php 中调用第 31 行并定义

文件名:Testing/Firstnames.php

行号:66

还有一堆Message: spl_object_hash() expects parameter 1 to be object, integer given 错误。

这是 Firstnames.php 的第 66 行:public function setMylastname(\ORM\Testing\Lastnames $mylastname = null)

我还没有开始破解它 - '$mylastname = null' 是否存在问题?

如何按实体插入外键值?

【问题讨论】:

    标签: php foreign-keys doctrine-orm entity


    【解决方案1】:
    $new_firstname->setMyLastName($new_lastname);
    

    而不是$new_firstname->setMyLastName($new_lastname ->getID());

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多