【问题标题】:Laravel after update (5.3 => 5.4) produces wrong sql更新后的 Laravel (5.3 => 5.4) 产生错误的 sql
【发布时间】:2017-10-10 18:22:22
【问题描述】:

我有使用 Laravel 5.3 的稳定项目。

今天决定将 Laravel 升级到 5.4 再升级到 5.5。我正在关注官方升级指南。

在 5.4 升级后,一切似乎都可以正常工作.. 除了一件事。我的多个 belongsToMany 关系之一现在产生了错误的 sql。

我的模型App\Situation 有关系:

public function feedbacks()
  {
    return $this->belongsToMany('App\Feedback');
  }

App\Feedback 型号:

public function situations()
  {
    return $this->belongsToMany('App\Situation');
  }

当然,我有表 feedbackssituationsfeedback_situation。 在升级之前这段代码很好:

dd($situation->feedbacks);

但现在它产生了异常:

未找到基表或视图:1146 表“example.feedback” 不存在(SQL:选择feedback.*, feedback_situation.situation_id 作为pivot_situation_id, feedback_situation.feedback_id 作为pivot_feedback_id 来自 feedback 内部连接 ​​feedback_situation feedback.id = feedback_situation.feedback_id 在哪里 feedback_situation.situation_id = 383)

这很奇怪,因为其他关系有效,而这一关系在 5.3 上有效。

【问题讨论】:

  • 它在搜索表反馈而不是反馈s
  • 这就是我问的原因。它应该搜索反馈表。它正在搜索 L5.3 的反馈表!
  • 将受保护的$table = 'feedbacks'; 添加到您的反馈模型中
  • 成功了。谢谢你。请发表你的答案。如果你知道它为什么坏了,我很乐意读它:)
  • 还不知道为什么坏了:(

标签: php laravel laravel-5 orm laravel-5.4


【解决方案1】:

将受保护的$table = 'feedbacks'; 添加到您的反馈模型中,以将模型使用的名称更改为feedbacks

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2017-06-26
    • 2018-10-13
    • 2018-02-05
    • 2017-07-20
    • 2019-02-07
    相关资源
    最近更新 更多