Присоединение к базе данных Symfony 3

Мне нужен результат со всеми записями двух таблиц. С помощью этого оператора 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;

...

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
47
1

Ответы 1

Насколько я понимаю, это обратная зависимость. Попробуйте добавить 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 07.09.2018 14:24

@ user3241084, ответ обновил. Доктрина создает запрос, а создает объект.

Navid 09.09.2018 20:33

Другие вопросы по теме