默认情况下可以添加many_many关系吗?
我正在使用子网站模块,每个站点都有一个博客,但是我们希望能够标记BlogPosts,这样它们就可以出现在任何其他子站点上:
我将此设置作为BlogPost的扩展:
private static $many_many = [
'Subsites' => Subsite::class
];
$fields->addFieldToTab('Root.PostOptions',
TagField::create('Subsites','Show on other sites',Subsite::get(),$this->owner->Subsites())
->setShouldLazyLoad(false)
->setCanCreate(false)
); 如何在创建BlogPost时将当前子网站添加为默认关系,以便Subsite2下的每个BlogPost默认都有一个“Subsite2”标记,即使用
Subsite::get_by_id(SubsiteState::singleton()->getSubsiteId())如果这没有道理的话,我会尝试解释更多:)
发布于 2022-07-05 12:37:45
您可以尝试在BlogPost的onBeforeWrite函数中添加关系,只需调用$this->Subsites()->add($subsiteObject)即可。要确保对象是真正创建的,而不仅仅是更新的,您可以检查对象id。如果还没有,则该对象是新创建的。
https://stackoverflow.com/questions/72470902
复制相似问题