代码之家  ›  专栏  ›  技术社区  ›  Bernie

10月3日这是否会引发错误?

  •  0
  • Bernie  · 技术社区  · 7 年前

    如果我(错误地)定义了如下所示的belongtomany(请注意表键后的“]”):

    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']
      ]
    ];
    

    刷新页面时会显示透视数据。

    我意识到我犯了打字错误,但我至少应该在10月3日警告我这种情况?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Hardik Satasiya    7 年前

    嗯,10月份CMS的代码结构主要是检查配置,如果格式不正确,则忽略这一点。

    为什么? :由于十月CMS基于Laravel,所有关系配置都传递给Laravel,因此它将初始化关系。 所以很难预测用户会犯什么样的错误,只使用配置所需的键而忽略rest是很容易的。

    因此,在您的情况下:( 我已经用适当的结构重写了你的代码 )

    public $belongsToMany = [
      'phonetypes' => [
         'NigglesLogic\Suitespots\Models\Phonetype',
         'table' => 'niggleslogic_suitespots_contact_phonetypes'
       ],
      'pivot' => ['phone_number']
    ];
    

    你可以看到,在重组之后,我们似乎已经定义了 2关系 ,一个是 phonetypes 和其他 pivot ,所以当我们试着去拿其中一个

    在第一种情况下[电话类型] :它无法从表中找到正确的关系数据,但表存在,因此返回 无效的 not an error
    在第二种情况下[枢轴] :我们没有使用它,因为我们不认为它是关系,但如果我们尝试使用它,它将找不到表 phone_number 所以它可能 throw an error .

    为了检测错误,我们需要更可预测的行为。
    [是的,10月份CMS可能会向您显示警告,但要显示警告,他们需要编写更多代码,如果他们检查所有内容,代码大小似乎会加倍:(]

    (我们不能对此显示警告)对于ex,如果我们定义路由:

    Route::get('/som-item', function() { ...code... })
    

    看,我写错了 /som项目 但是 但是 ,我需要使用 /某些项目 url so laravel 无法就此向我发出警告 作为它的正确路线,它会告诉我 /某些项目 未定义错误 但它不会告诉我你犯了拼写错误,就像警告一样:) .

    [在得到一些警告之前,我们不会看到警告 AI输入代码:) ]