編集:移行:私は@MichaelHirschlerと@MayaShahが提案し、それが問題を解決し、それは私が教義を使用して教義の移行ファイルを作成することができます何をしたdiffコマンドが、私はこれらを移行しようとしたとき、 doctrine:migration:を使用してデータベースを変更すると、次のエラーが表示されます。ドクトリンORM例外
移行20170325192546実行中に失敗しました。
SQLSTATE [HY000]:一般的なエラー:テーブル」eship_caseを作成することはできません1005#のSQL-81c_e 'TABLE事業が制約FK_8D36E3844FFE0C3 FOREIGN KEY(client_email)REFERENCESクライアント(clientEmail)を追加ALTER' を実行中に例外が発生したエラー'(errnoに:150)を実行中に例外が発生しました
[DriverException \教義\ DBAL \例外] 'TABLE事業が制約FK_8D36E3844FFE0C3 FOREIGN KEY(client_email)REFERENCESクライアントを追加する(clientEmailを)ALTER':
私はこれがあることを理解MySQLのエラーですが、私はDoctrineがマイグレーションの世話をすると思っていました。そうしないと、それを修正する方法がわかりません。私はこれを修正するためにMySQL上で手動でスキーマを行うことができましたが、SymfonyのORMスキーマにどのような影響を与えるかはわかりません。申し訳ありませんが、私はPHPを初めて使い、SymfonyとDoctrineを初めて使用しています。
オリジナルポスト データベースとしてMySQLを使用するSymfony Frameworkを使用してWebアプリケーションを作成しています。私はデータベースをマップするためにORMを行うためにdoctrineを使用しています。しかし、外部キーを含むようにデータベースのスキーマを更新しようとすると、次のエラーが表示されます。1 私は実際にエラーを理解していません。
ここに、両方のクラスのコードを示します。クライアントの主キーはclientEmailであり、そのキーとビジネスエンティティとの関係を作りたいと思っています。私はいくつかのドキュメントが不足しているかもしれないが、私はこのエラーに移動する前に修正しようとしていることを知っている。クラスはもっと長くなっていますが、私は問題の原因となる可能性のある領域のみを掲載しました。
ビジネスクラス:
<?php
/**
* @ORM\Entity
* @ORM\Table(name="business")
*/
class Business
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $businessId;
/**
* @ORM\Column(type="string")
*/
private $name;
/**
* @ORM\Column(type="string")
*/
private $stage_Of_Development;
//Relations
/**
* @ORM\ManyToOne(targetEntity="Client")
*/
private $client;
//Getters and Setters
/**
* @return mixed
*/
public function getClient()
{
return $this->client;
}
/**
* @param mixed $client
*/
public function setClient(Client $client)
{
$this->client = $client;
}
}
クライアントクラス:
<?php
/**
* @ORM\Entity
* @ORM\Table(name="client")
*/
class Client
{
/**
* @ORM\ID
* @ORM\Column(type="string")
*/
private $clientEmail;
/**
* @return mixed
*/
public function getClientEmail()
{
return $this->clientEmail;
}
/**
* @param mixed $clientEmail
*/
public function setClientEmail($clientEmail)
{
$this->clientEmail = $clientEmail;
}
}
完全なSQL例外を投稿してください、それは隠されているかもしれませんが、私は何が起こっているかを伝えることはできません。 –
次はコマンドラインの画像です:https://i.stack.imgur.com/i4StC.png –
この回答を見てください:http://stackoverflow.com/a/4673775/6849366。一般的にDoctrineはうまくいっていますが、データベースの設定に何か問題があると思います。 –