@cubooks
Web-developer

Как правильно связать данные в Yii1?

Здравствуйте! Ломаю голову на счет связей таблиц в Yii. Допустим, мы имеем три таблицы и данные в этих таблицах:

Lookup - (id, type, code, title) - в таблице хранятся данные валют, просто их code и title

1, price_currency, 10, rur
2, price_currency, 20, usd
2, price_currency, 30, eur


StoreItem - (id, name, price, price_currency) - таблица предметов с ценами и валютой (где price - это цена, а price_currency - записанный code валюты)

1, предмет №1, 1000, 10
2, предмет №2, 2000, 20
3, предмет №3, 1000, 30


CrossCourse (sell, buy, course) - таблица кросс-курсов валют. Тут все понятно.

rur, rur, 1
usd, rur, 50
eur, rur, 60


-------------------------------

Теперь о моделях и их связях:

По-идее, в модели StoreItem мы должны сделать связь с Lookup, для того получить название валюты (code), и соответственно как-то получить связь с CrossCourse, чтобы мы получили поле курс валютной пары (course).

Что я пытался сделать:

Я пытался выставить MANY_MANY связь к таблице Lookup, но у меня не получилось этого сделать, потому что он не правильно формировал LEFT JOIN запрос. Он пытался соединить t.id = t.code, а нужно t.price_currency = t.code

P.S В дальнейшем цена будет формироваться в поле (price * course) AS price_course
P.S.S Поля code, price_currency, course - не уникальные, не имеющие ключа
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
Tpona
@Tpona
Ужасный перфекционист
п.4 : www.yiiframework.com/doc/guide/1.1/ru/database.arr
www.yiiframework.com/doc/guide/1.1/ru/database.arr...

И вообще, почему Вы хотите использовать в качестве внешнего ключа для связи с Lookup - code, а d CrossCourse запихнули title из Lookup?
Что-то из этого лишнее.
Либо я чего не так понял
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы