I have a many to many relationship. My main object is a members table and these members can have multiple interests as a dropdown selection. A interest can also have multiple members.
When I test my create view I get the following error:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'tomcrud.interest_member' doesn't exist (SQL: select interests
.*, interest_member
.member_id
as pivot_member_id
, interest_member
.interest_id
as pivot_interest_id
from interests
inner join interest_member
on interests
.id
= interest_member
.interest_id
where interest_member
.member_id
is null) (View: G:\laragon\www\tomcrudesources\views\members\partials\member_form.blade.php) (View: G:\laragon\www\tomcrudesources\views\members\partials\member_form.blade.php)
If I read laravel docs correctly, the interest_member table should be created automatically with all the relevant keys. I can't see such a table in my schema. I can however see my members and interests tables.
I believe my Models are configured correctly:
Member Model:
class Member extends Model
{
public function interests()
{
return $this->belongsToMany('App\Interest', 'interest_member');
}
}
Interest Model:
class Interest extends Model
{
public function members()
{
return $this->belongsToMany('App\Member');
}
}
My MemberController create() function:
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);
}
The multi select dropdown portion of my member_form blade:
<div class="form-group">
{!! Form::label('interest_id[]', 'Interest:') !!}
{!! Form::select('interest_id[]', $interests, $member->interests->pluck('id'), ['multiple' => true, 'class' => 'form-control']) !!}
</div>