私は2つのテーブルbackup_policy
とbackup_settings
を持っています。 backup_policy
にはbackup_settings_id
という外部キーフィールドがあり、backup_settings
id
フィールドにマップされています。私はこのコードをしようとすると、この2つのテーブルsymfony3の外部キー関係エンティティは動作しません
ALTER TABLE `backup_policy_scheduler`
ADD FOREIGN KEY (`backup_policy_id`) REFERENCES `backup_policy` (`id`)
との関係を作成するために実行されたクエリは、今の問題は、画面が負荷に維持し、私の最大の実行エラーを与えていますさ。
$repository=$this->getDoctrine()>getRepository('AppBundle:BackupPolicy');
$settings = $repository->findAll();
私はSQL文を準備し、fetchAll()を実行すると結果がフェッチされます。
私はレコードを挿入しようとすると、それは私に次のエラーを与える:
Type error: Argument 1 passed to AppBundle\Entity\BackupPolicy::setBackupSettings() must be an instance of AppBundle\Entity\BackupSettings, string given, called in /var/www/symfonyproject/src/AppBundle/Controller/BackupPolicyController.php on line 46
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* BackupPolicy
*
* @ORM\Table(name="backup_policy")
*@ORM\Entity(repositoryClass="AppBundle\Entity\Repository\BackupPolicyRepository")
*/
class BackupPolicy
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \BackupSettings
*
* @ORM\ManyToOne(targetEntity="BackupSettings")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="backup_settings_id", referencedColumnName="id")
* })
*/
private $backupSettings;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set backupSettings
*
* @param \AppBundle\Entity\BackupSettings $backupSettings
*
* @return BackupPolicy
*/
public function setBackupSettings(\AppBundle\Entity\BackupSettings $backupSettings = null)
{
$this->backupSettings = $backupSettings;
return $this;
}
/**
* Get backupSettings
*
* @return \AppBundle\Entity\BackupSettings
*/
public function getBackupSettings()
{
return $this->backupSettings;
}
}
あなたのエラーは、あなたが文字列での$ this - > backupSettingsを割り当てようということです。あなたのコントローラライン46に。これは、foreignnキーまたはマッピングには関係しません。 コントローラを表示します。 – Alsatian
はい、そうです。私は文字列だけを挿入しています。私はbackup_settingsテーブルに挿入するときにこれを取得しています。しかし、なぜfindAll()もうまくいけませんか? –
コントローラを表示してください。 – Alsatian