У меня есть несколько моделей доктрин, которые связаны с другими моделями.Давайте назовем их ItemsOne
, ItemsTwo
, ItemsThree
.У каждого есть отношение, определенное к классу Products
доктрины (таблица продуктов), и отношение определено как:
$this->hasMany(
'Models_Products as Products',
array(
'local' => 'id',
'foreign' => 'product_id',
)
);
Ничего необычного там нет.
У меня также есть другая таблица(prices
), в котором хранятся данные пространства имен.Под этим я подразумеваю, что в конкретной таблице хранятся данные на основе предопределенного ключа (то есть Vinyl
, CD
, DVD
), поэтому строки будут отображать что-то вроде этого:
media_namespace entity_id quantity unit_price
CD 4 1000 0.99
DVD 4 2500 1.25
CD 7 3750 0.25
Vinyl 15 75 4.25
entity_id
- это идентификатор каждой из моделей, обращающихся к этой таблице.Например, CD/entity_id = 4
относится к модели ItemsOne
, DVD/entity_id = 4
относится к модели ItemsTwo
и т. Д.
Я хочу создать отношения - и я не знаю, можно ли это сделать- тогда как это будет пространство имен в модели.Таким образом, в приведенном выше примере, описанном для отношений товаров, мне нужно что-то вроде (для модели ItemsOne):
$this->hasMany(
'Models_Prices as Prices',
array(
'local' => 'id',
'foreign' => 'entity_id',
)
);
Однако, приведенное выше вернет все цены с entity_id
, соответствующим таблице ItemsOne
, котораяотчасти правильно.В приведенном выше примере, если entity_id = 4
, он вернет запись CD
, но также и DVD
, что не то, что мне нужно.Я хочу, чтобы он фильтровал данные на основе таблицы media_namespace
.Короче говоря, мне нужно:
prices.media_namespace = 'CD' AND prices.entity_id = itemsone.id
Может ли сказанное выше быть отражено в hasMany
отношениях в Учении?Я искал и не могу что-то, что могло бы помочь.
Любые указатели более чем оценены!