Моя схема выглядит примерно так:многие-к-одному атрибуты Бури
CREATE TABLE plans (
id SERIAL PRIMARY KEY,
description text
);
CREATE TABLE projects (
id SERIAL PRIMARY KEY,
project_id character varying(240) UNIQUE,
plan_id integer REFERENCES plans(id) ON DELETE CASCADE
);
И я хочу сделать Грозовые запросы по линии
plan = store.find(Plan, Plan.project_id == "alpha")
# should translate to something like
# SELECT p.* from plans p LEFT JOIN projects proj ON p.id = proj.plan_id
# WHERE proj.project_id = 'alpha';
(Обратите внимание, что projects.plan_id
не является уникальным .)
Как это установить?
Выглядит хорошо. Я предполагаю, что я ожидал, что смогу определить отношение Plan.id == Project.plan_id в некотором атрибуте в Plan, а не явно в выражении find, но это работает. – keturn
Ну, в зависимости от того, как вы структурируете свой код, добавление свойств Reference или ReferenceSet к вашим классам может лучше соответствовать вашим потребностям. Например, если вы уже получили соответствующую строку Project, вы можете получить доступ к плану как «project.plan», если вы определили ссылку на класс Project как: plan = Reference (plan_id, Plan.id) Но если бы я начинал с имени проекта и хотел, чтобы план был напрямую, то одно действие find() будет приводить к меньшему количеству запросов. –