Присоединение к базе данных Symfony 3 - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужен результат со всеми записями двух таблиц. С помощью этого оператора SQL я получаю желаемый результат, но как мне это заархивировать в Symfony?

В моем результате я хочу соединить dataset.id с datasetFile.dataset_id как я могу получить это с возможно присоединиться к Symfony 3.

Select *
from dataset
    LEFT JOIN dataset_file ON dataset.id=dataset_file.dataset_id

Класс данных

...

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(name="strap_id", type="integer")
 * @Assert\NotBlank()
 */
protected $strap_id;

/**
 * @ORM\Column(name="user_id", type="integer")
 */
protected $user_id;

/**
 * @ORM\Column(name="start_date", type="date")
 * @Assert\Date()
 */
protected $start_date;

/**
 * @ORM\Column(name="end_date", type="date", nullable=true)
 * @Assert\Date()
 */
protected $end_date;

/**
 * @ORM\Column(name="status", type="integer")
 */
protected $status;

...

DatasetFile

...

/**
 * @ORM\ManyToOne(targetEntity="Dataset")
 * @ORM\JoinColumn(name="dataset_id", referencedColumnName="id")
 */
private $dataset;

...

1 Ответ

0 голосов
/ 07 сентября 2018

Это обратная связь, насколько я понимаю. Попробуйте добавить inversedBy в аннотацию $dataset.

/**
 * @ORM\ManyToOne(targetEntity="Dataset", inversedBy="id")
 * @ORM\JoinColumn(name="dataset_id", referencedColumnName="id")
 */
private $dataset;

Свойство $dataset является экземпляром Dataset. У сущности DatasetFile должны быть сеттер и геттер для $dataset, как показано ниже.

 /**
 * @var int
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\ManyToOne(targetEntity="Dataset", inversedBy="id")
 * @ORM\JoinColumn(name="dataset_id", referencedColumnName="id")
 */
private $dataset;

/**
 * DatasetFile constructor.
 */
public function __construct()
{
}

/**
 * @return int
 */
public function getId(): int
{
    return $this->id;
}

/**
 * @param int $id
 *
 * @return DatasetFile
 */
public function setId(int $id): DatasetFile
{
    $this->id = $id;

    return $this;
}

/**
 * @return Dataset
 */
public function getDataset(): Dataset
{
    return $this->dataset;
}

/**
 * @param Dataset $dataset
 *
 * @return DatasetFile
 */
public function setDataset(Dataset $dataset): DatasetFile
{
    $this->dataset = $dataset;

    return $this;
}

Используйте это свойство как

/**
 * @param DatasetFile $datasetFile
 *
 */
public function doSomthing (DatasetFile $datasetFile): void
{
    /** @var Dataset $dataset */
    $dataset = $datasetFile->dataset;
    ....
    ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...