如果我(错误地)定义了belongsToMany,如下所示(注意表格后面的密钥):
for (var i =1; i<=11; i=i+1){ // our loop.
console.log('I Love Making Pizza'); //our loop body
}
我可以查看该页面,不会抛出任何错误。但是透视数据没有显示。
如果我将上面的内容更改为此(使用枢轴键后的],我打算将其更改为:
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes'],
'pivot' => ['phone_number']
];
刷新页面时显示数据透视数据。
我意识到我输错了但是我应该在OctoberCMS中至少警告我这种情况吗?
答案 0 :(得分:1)
嗯,10月CMS的代码结构主要检查配置,如果格式不正确,那么就忽略了那个。
为什么?:因为10月CMS基于Laravel,并且所有关系配置都传递给Laravel,然后它将初始化关系。 因此很难预测用户会犯哪种错误,只需使用配置所需的密钥而忽略休息就很容易。
所以在你的情况下:( 我已经用适当的结构重写你的代码)
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes'
],
'pivot' => ['phone_number']
];
你可以看到重组后看起来我们已经定义了 2个关系,一个是phonetypes
和其他pivot
,所以当我们尝试获取其中一个< BR />
在第一种情况下[phonetypes] :它无法从表中找到正确的关系数据,但是表存在,因此返回 null not an error
在第二种情况下[pivot] :我们没有使用它,因为我们不认为它是关系,但如果我们尝试使用它,它将找不到表phone_number
所以它可能{{ 1}}。
为了检测错误,我们需要更可预测的行为 [是的10月CMS可能会向您显示警告,但要显示警告他们需要编写更多代码,如果他们检查所有内容,代码大小似乎会加倍:(]
如果我们定义路线,(我们无法对此显示警告):
throw an error
请注意,我错误地写了 / som-item 但但是,我需要使用 / some-item url {{1} } 无法向我发出关于此的警告作为其正确路线,它会告诉我 / some-item 未定义错误但它不会告诉我那个你拼写错误的家伙警告:)。
[在我们在代码中获得 AI之前,我们不会看到警告:)]