0

Doctrine2 + CodeIgniter2を使用しており、結合テーブルの簡単なテストを作成しようとしています。

関連する2つのテーブルのスキーマは次のとおりです。

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、INDEX IDX_23D7305696EC0FA4(mylastname_id)、PRIMARY KEY(id))ENGINE = InnoDB;

ALTER TABLE test_firstnames ADD CONSTRAINT 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のインスタンスである必要があり、整数が指定され、31行目の/[PATH]/applicationFolder/controllers/testing/test_namejoins_insert.phpで呼び出されます。定義済み

ファイル名: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'の問題はありますか?

エンティティごとに外部キー値を挿入するにはどうすればよいですか?

4

1 に答える 1

1
$new_firstname->setMyLastName($new_lastname);

それよりも$new_firstname->setMyLastName($new_lastname ->getID());

于 2012-04-20T18:51:49.367 に答える