I want to create tag system but I have an error “Error Call to a member function attach() on null “. Look at my code
Relationship:
Job.php
JavaScript
x
public function services(){
$this->belongsToMany('AppJobervices');
}
Jobservices.php
JavaScript
public function jobs(){
$this->belongsToMany('AppJob');
}
And I created pivot table
JavaScript
Schema::create('job_jobservices', function (Blueprint $table) {
$table->id();
$table->integer('job_id');
$table->integer('jobservices_id');
$table->timestamps();
});
Controller and view
Into controller I tryed attached my services. Look at this.
JavaScript
$job = Job::create([
'title' => $request->title,
'description' => $request->description,
//...
]);
$job->services()->attach($request->services);
I think, $request->services is good becouse If i try dd($request->services), it display me this but just in case I’ll show you my view
JavaScript
<select class="js-example-responsive col-12" multiple="multiple" name="services[]">
@foreach($services as $service)
<option value={{ $service->id }}>{{ $service->name }}</option>
@endforeach
</select>
@error('services')
<div class="alert alert-danger" role="alert">
{{ $message}}
</div>
@enderror
I don’t know why but it display me an error
Error Call to a member function attach() on null
Do you know what is wrong?
Advertisement
Answer
You should return with the relationship.
JavaScript
public function services()
{
return $this->belongsToMany('AppJobervices');
}
JavaScript
public function jobs()
{
return $this->belongsToMany('AppJob');
}