Мне нужен результат со всеми записями двух таблиц. С помощью этого оператора SQL я получаю желаемый результат, но как я могу получить его в symfony?
В моем результате я хочу подключить dataset.id с datasetFile.dataset_id как я могу получить это с помощью, возможно, присоединиться к Symfony 3.
Select * from dataset LEFT JOIN dataset_file ON dataset.id=dataset_file.dataset_id
class Dataset
...
/**
* @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;
...

Насколько я понимаю, это обратная зависимость. Попробуйте добавить 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;
....
....
}
@ user3241084, ответ обновил. Доктрина создает запрос, а создает объект.
Как я могу создать свой запрос и получить результаты?