は、私が、私はその前に私が決める、http://www.jasongrimes.org/2012/01/using-doctrine-2-in-zend-framework-2/ OKチュートリアルを使用して、教義2を統合し、その後、ロン・アレンのチュートリアルhttp://akrabat.com/getting-started-with-zend-framework-2/ で開始しましたそれをより複雑にする。Zend Frameworkに2つのモデルが、私はその2. をZend Frameworkのを理解しようとしている2
私は次のようにデータベースを変更します。
--
-- Estrutura da tabela `album`
--
CREATE TABLE IF NOT EXISTS `album` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`artist_id` int(11) NOT NULL,
`title` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `artist` (`artist_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
--
-- Estrutura da tabela `artist`
--
CREATE TABLE IF NOT EXISTS `artist` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
私のアプリケーションは、この構造を持っている:
module
Album
src
Album
Controller
AlbumController.php
Entity
Album.php
Artist
src
Artist
Controller
ArtistController.php
Entity
Artist.php
私の新しいエンティティは、そのようなものです:
class Album {
/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $title;
/**
* @ORM\ManyToOne(targetEntity="Artist", inversedBy="album")
* @ORM\JoinColumn(name="artist_id", referencedColumnName="id")
*/
protected $artist;
...
}
class Artist {
/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="Album", mappedBy="artist")
*/
protected $album;
public function __construct()
{
$this->album = new ArrayCollection();
}
...
}
しかし、それはdoesnの仕事!
"The target-entity Album\Entity\Artist cannot be found in 'Album\Entity\Album#artist'."
だから私の質問は次のとおりです:何が問題なのである 私はこのmensageを得ましたか。私の団体は間違った場所にいる?または私のモジュール構成は大丈夫ではありませんか? 複数のモジュールで1つのエンティティを表示させるにはどうすればよいですか?
UPDATE:
私は私のエンティティを変更します。
class Album {
/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $title;
/**
* @ORM\ManyToOne(targetEntity="\Artist\Entity\Artist", inversedBy="album")
* @ORM\JoinColumn(name="artist_id", referencedColumnName="id")
*/
protected $artist;
...
}
class Artist {
/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="\Album\Entity\Album", mappedBy="artist")
*/
protected $album;
...
}
しかし、私は同じエラーだ:
"The target-entity Artist\Entity\Artist cannot be found in 'Album\Entity\Album#artist'."
UPDATE 2:
私は変更をその自分のアプリケーションの構造:
module
Album
src
Album
Controller
AlbumController.php
ArtistController.php
Entity
Album.php
Artist.php
ので、私のエンティティが同じ名前空間にあり、今私のプログラムは、それが働いています! =)
しかし、私はまだ質問があります.ZF2の複数のモジュールに1つのエンティティを表示させるにはどうすればよいですか?
あなたがそれが働いているのを見てうれしい。 Doctrine 2は実体が同じディレクトリに存在するのが本当に好きです。 Symfony 2には複数のディレクトリを許可するためのラッパーコードがありますが、詳細は見たことがありません。 ZF2が実際にリリースされ、より多くの人がZF2を使用し始めるまで、あなたは少なくとも自分でいるかもしれません。 – Cerad
ええ、それはZF2の質問のみだと思います...しかし、誰も私の質問に答えることはできません。あなたが 'albumモジュール'(selectOneとselectAllだけ)と 'adminモジュール'(selectOne 、selectAll、insert、update、delete)、エンティティの整理方法は?それは私の質問です...しかし、あなたの助けのために大変ありがとうございます@セラード! – vinigarcia87