Silverstripe DataObject Relationships - 两个has_many彼此相关

时间:2017-05-01 14:47:03

标签: php silverstripe

我想要解决这个问题我有点疯狂,我确信解决方案很简单,但我在查看这些数据关系时遇到了麻烦。所以,这就是我要做的事情:

我有一个名为" Offer"的对象,它需要两个GridFields用于" ItineraryItem"和" ItineraryTab"数据对象

这就是我在三个对象中的那一刻,但它每次都会返回一个错误,我似乎无法弄清楚原因。

// Offer
$has_many = array(
   "ItineraryItems" => "ItineraryItem",
   "ItineraryTabs" => "ItineraryTab"
);

// On ItineraryTab
$has_one = array(
   "Offer" => "Offer"
);
$many_many = array(
   "ItineraryItems" => "ItineraryItem"
);

// on ItineraryItem
$has_one = array(
   "Offer" => "Offer"
);
$belongs_many_many = array(
   "ItineraryTabs" => "ItineraryTab"
);

正如我所说,解决方案可能非常简单,但经过这么多小时的尝试后我再也看不到了!请帮帮我!

我在Silverstripe 3.4上运行,如果有帮助的话

1 个答案:

答案 0 :(得分:0)

所以,我必须自己回答这个问题,并找到了可行的方法 - 但我不确定这是正确的方法还是黑客攻击。无论如何,这是有帮助的。

首先,我必须进入数据库并从Tab对象中删除OfferID列。

// Offer.php
$has_many = array(
    'ItineraryItems' => 'ItineraryItem'
);

$many_many = array(
   'ItineraryTabs' => 'ItineraryTab', 
);

//ItineraryItem.php
$has_one = array(
    "Offer" => 'Offer'
);

$many_many = array(
    'ItineraryTabs' => 'ItineraryTab'
);

//ItineraryTab.php
$belongs_many_many = array(
    "ItineraryItems" => "Offer.ItineraryItems"
);

如果有人发现更优雅的东西,请告诉我,但这似乎暂时可以完成。