【发布时间】:2026-01-31 19:45:02
【问题描述】:
我正在 Silverstripe 中建立一对多关系并尝试为其设置主题,但我无法在页面上获得许多部分。对象上的 has_many 定义为:
public static $has_many = array(
'PortsPages' => 'PortsPage'
);
当我尝试使用循环遍历它时
<% loop $PortsPages %>
<li>$Title</li>
<% end_loop %>
只有一条记录返回($Title 什么都没有 - $Name 随 PortsPage 返回 - 不是对象的标题),尽管数据库中有 2 条记录。我相信我使用的是 3.1 版,并且我已经通过 http://doc.silverstripe.org/framework/en/tutorials/5-dataobject-relationship-management,这对我没有帮助(并且尚未更新为最新版本)。
编辑:
$has_one 定义如下:
private static $has_one = array(
'CityPage' => 'CityPage'
);
当我查看 PortsPage 表时,链接似乎在其中(有一个 CityPageID 列已填充并且看起来正确)。当我查看 PortsPage_Live 时,未填充 CityPageID 列。
【问题讨论】:
-
它是 以 s 结尾?
-
我试过了 - 不产生 li 标签( 产生 1)。
-
数据库中有 2 并不意味着这 2 在您的页面上实际链接(关系的一部分)。请添加“s”。
-
如果它们出现在页面上,它们应该是链接。但最好的调试方法是使用 phpmyadmin 或其他方式查看 MySql 中的 DB 表,每个 PortsPage 上应该有一个
PageID或其他一些外键。另外,请确保您的 PortsPage 定义了正确的反向has_one关系,否则它将无法正常工作:doc.silverstripe.org/framework/en/topics/datamodel#has-many -
你在发布数据吗?
标签: silverstripe