【发布时间】: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添加迁移并使用正确的列填充它,然后更新您的架构。您在文档中哪里读到这些表格是自动生成的? (好奇地问)