【发布时间】:2017-05-01 14:47:03
【问题描述】:
我想弄清楚这一点有点疯狂,我确信解决方案很简单,但我在可视化这些数据关系时遇到了真正的麻烦。所以,这就是我想要做的:
我有一个名为“Offer”的对象,它需要两个 GridField 用于“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,如果有帮助的话
【问题讨论】:
-
您遇到了什么错误?
-
在获得报价的 ajax 页面中,我得到了这个:SELECT DISTINCT count(DISTINCT "ItineraryItem"."ID") AS "Count" FROM "ItineraryItem" INNER JOIN "ItineraryTab_ItineraryItems" ON "ItineraryTab_ItineraryItems" ."ItineraryItemID" = "ItineraryItem"."ID" LEFT JOIN "ItineraryTab" ON "ItineraryTab_ItineraryItems"."ItineraryTabID" = "ItineraryTab"."ID" WHERE ("OfferID" = ?) AND ("ItineraryTab"."TabNo" = ?) where 子句中的“OfferID”列不明确
-
您是否真的需要将商品与商品和标签以及商品与标签相关联,反之亦然?我不知道这些模型代表什么,但它似乎过于复杂。发生错误是因为您在两个相互引用的地方有相同的关系别名 - 通过将
Offer更改为ItemOffer或其他东西来修复,但这并不一定意味着您的关系设置正确. -
我愿意接受建议,我想要实现的是每个报价的行程项目都可以分组到选项卡中。我试图让客户端使用 ItineraryTab 对象创建尽可能多的选项卡。
-
您需要项目和标签相互关联吗?否则,您可以通过 Offer 模型访问它们并远程访问交叉关系
标签: php silverstripe