SilverTripe DataObject关系 - 两个相互关联的HAS_MANY



我要弄清楚这一点,我相信解决方案很简单,但是我真的很难地可视化这些数据关系。所以,这就是我要做的:

我有一个称为" upers"的对象,它需要两个格里场来进行" rateraryItem"one_answers" terinerarytab"数据对象

这是我在三个对象中的一分钟所拥有的,但是每次都在返回错误,我似乎无法弄清楚为什么。

// 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上操作,如果有帮助

所以,我必须自己回答这个问题,并找到了有效的东西 - 但是我不确定这是正确的方法或是否是黑客。无论如何,在这里,如果它可以帮助某人。

首先,我必须进入数据库,然后从选项卡对象删除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"
);

如果有人发现一些更优雅的东西,请让我知道,但这似乎现在可以完成工作。

最新更新