【问题标题】:Many to Many | View Error多对多 |查看错误
【发布时间】:2018-06-07 00:42:15
【问题描述】:

我有一个多对多的关系。我的主要对象是一个成员表,这些成员可以有多个兴趣作为下拉选择。一个兴趣也可以有多个成员。

当我测试我的创建视图时,我收到以下错误:

SQLSTATE[42S02]:未找到基表或视图:1146 表“tomcrud.interest_member”不存在(SQL:选择interests.*、interest_member.member_id 作为pivot_member_id、@987654325 @.interest_id as pivot_interest_id from interests inner join interest_member on interests.id = interest_member.interest_id 其中interest_member.member_id 为空(查看:G:G:.member_id 为空) \laragon\www\tomcrud\resources\views\members\partials\member_form.blade.php)(查看:G:\laragon\www\tomcrud\resources\views\members\partials\member_form.blade.php)

如果我正确阅读 laravel 文档,则应该使用所有相关键自动创建 interest_member 表。我在我的架构中看不到这样的表。但是,我可以看到我的成员和兴趣表。

我相信我的模型配置正确:

会员模型:

class Member extends Model
{
    public function interests()
    {
        return $this->belongsToMany('App\Interest', 'interest_member');
    }
}

兴趣模型:

class Interest extends Model
{
    public function members()
    {
        return $this->belongsToMany('App\Member');
    }
}

我的 MemberController create() 函数:

public function create()
    {
        $member = new Member;
        $data = array();
        $data['member'] = $member;
        $data['languages'] = Language::pluck('name', 'id');
        $data['interests'] = Interest::pluck('name', 'id');

        return view('members.create', $data);
    }

我的 member_form 刀片的多选下拉部分:

<div class="form-group">
    {!! Form::label('interest_id[]', 'Interest:') !!}
    {!! Form::select('interest_id[]', $interests, $member->interests->pluck('id'), ['multiple' => true, 'class' => 'form-control']) !!}
</div>

【问题讨论】:

  • 表格不是自动生成的;您需要为 interest_member 添加迁移并使用正确的列填充它,然后更新您的架构。您在文档中哪里读到这些表格是自动生成的? (好奇地问)

标签: php laravel eloquent


【解决方案1】:

您需要创建一个interest_member 表,该表可以有 3 列(id、member_id、interest_id)。然后您可以在它们之间创建这种类型的关系。

【讨论】:

  • 但是文档还说了别的?我跑了: php artisan make:model Interest --migration 在数据库中创建兴趣模型和兴趣表。根据文档,我的理解是 Laravel 会自动创建一个 interest_member 表,并自动设置外键。我是否误读了 Laravel 5.6 文档的雄辩>>关系>>多对多部分?文档没有给出设置第三个表的任何示例,也没有提供如何配置外键的示例,因此我假设所有这些都是自动设置的。
  • 查看此链接laravel.com/docs/5.6/eloquent-relationships#many-to-many,他们还提到了第三张表(role_user)。
  • 我经历了几次,但不是很有帮助。我将创建interest_member 表,然后我需要弄清楚如何链接外键
猜你喜欢
  • 2012-08-05
  • 2013-02-28
  • 1970-01-01
  • 2021-03-16
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多