OctoberCMS 这应该引发错误吗?
OctoberCMS Should this throw an error?
如果我(错误地)定义了一个 belongsToMany 如下(注意 table 键后的 ]):
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes'],
'pivot' => ['phone_number']
];
我可以查看页面并且没有抛出任何错误。但是数据透视表不显示。
如果我将上面的内容更改为这个(在主键后面加上 ],这是我想要的):
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes',
'pivot' => ['phone_number']
]
];
刷新页面时显示透视数据。
我意识到我输入错误,但我应该让 OctoberCMS 至少警告我这种情况?
嗯,October CMS 的代码结构主要检查配置,如果它的格式不正确,那么它会忽略那个东西。
为什么?:因为October CMS是基于Laravel的,所有关系配置都传递给Laravel然后它会初始化关系。
所以很难预测用户会犯什么样的错误,只使用配置所需的密钥而忽略其余部分是相当容易的。
So in your case: (I have rewritten your code in proper structure)
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes'
],
'pivot' => ['phone_number']
];
可以看到重组后我们定义了2个关系,一个是phonetypes
,另一个是pivot
,所以当我们尝试获取其中之一
第一种情况 [phonetypes]:它无法从 table 中找到合适的关系数据,但是 table 存在所以它 returns 空 not an error
在第二种情况下 [pivot] :我们没有使用它,因为我们不认为它是关系,但如果我们尝试使用它,它也不会找到 table phone_number
所以它可能 throw an error
.
为了检测错误,我们需要更多预测table 行为。
[ 是的,October CMS 可以向您显示警告,但要显示警告,他们需要编写更多代码,而且如果他们检查所有内容,代码大小似乎会增加一倍:( ]
(我们不能为此显示警告)对于 ex 如果我们定义路由:
Route::get('/som-item', function() { ...code... })
看,我错写了/som-item但是but,我需要用/some-item url 所以 laravel
不能给我警告 作为它的正确路线,它会告诉我 /some-item not defined error 但是它不会告诉我你拼写错误警告:).
[在代码中得到一些 AI 之前我们不会看到警告 :)]
如果我(错误地)定义了一个 belongsToMany 如下(注意 table 键后的 ]):
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes'],
'pivot' => ['phone_number']
];
我可以查看页面并且没有抛出任何错误。但是数据透视表不显示。
如果我将上面的内容更改为这个(在主键后面加上 ],这是我想要的):
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes',
'pivot' => ['phone_number']
]
];
刷新页面时显示透视数据。
我意识到我输入错误,但我应该让 OctoberCMS 至少警告我这种情况?
嗯,October CMS 的代码结构主要检查配置,如果它的格式不正确,那么它会忽略那个东西。
为什么?:因为October CMS是基于Laravel的,所有关系配置都传递给Laravel然后它会初始化关系。 所以很难预测用户会犯什么样的错误,只使用配置所需的密钥而忽略其余部分是相当容易的。
So in your case: (I have rewritten your code in proper structure)
public $belongsToMany = [
'phonetypes' => [
'NigglesLogic\Suitespots\Models\Phonetype',
'table' => 'niggleslogic_suitespots_contact_phonetypes'
],
'pivot' => ['phone_number']
];
可以看到重组后我们定义了2个关系,一个是phonetypes
,另一个是pivot
,所以当我们尝试获取其中之一
第一种情况 [phonetypes]:它无法从 table 中找到合适的关系数据,但是 table 存在所以它 returns 空 not an error
在第二种情况下 [pivot] :我们没有使用它,因为我们不认为它是关系,但如果我们尝试使用它,它也不会找到 table phone_number
所以它可能 throw an error
.
为了检测错误,我们需要更多预测table 行为。
[ 是的,October CMS 可以向您显示警告,但要显示警告,他们需要编写更多代码,而且如果他们检查所有内容,代码大小似乎会增加一倍:( ]
(我们不能为此显示警告)对于 ex 如果我们定义路由:
Route::get('/som-item', function() { ...code... })
看,我错写了/som-item但是but,我需要用/some-item url 所以 laravel
不能给我警告 作为它的正确路线,它会告诉我 /some-item not defined error 但是它不会告诉我你拼写错误警告:).
[在代码中得到一些 AI 之前我们不会看到警告 :)]