hope you're having a good day.
I'm using Laravel 8. I have three models and I need those models "entangled", so to speak.
So, I have three basic tables
areas,threats,positions
---
id
name
So the relationship needed is something like this:
t3
belongsToMany t1
and vice versa. (Many to Many)t3.t1
relationship belongsToMany t2
(Many to Many)My approach so far is this:
t3.t1
).t3t1.t2
).So far, the first relationship can be saved by doing $model->relatedModel()->attach($id);
.
Now, for the second relationship, how can I attach the related models?
My last resort is to query the saved custom pivot model and attach the t2
model(s), but I wanted to ask first if there's a cleaner, eloquent-laravel way to do this.
Any advice would help. Thanks in advance for taking your time.
explanation
the attach
method is actually a Model
function. so with your withPivot
t3.t1
is not a model yet
, when you are accessing with pivot magic method
from your relation belongs to many it only return the column
answers
so for your situation, withPivot
t3.t1
pivot as Model instance
. here the steps
PivotModel
that extends use Illuminate\Database\Eloquent\Relations\Pivot;
t1Model
, add using($classNamespace)
to the belongsToMany
method, example: belongsToMany()->using(PivotModel::class)
t1->getT2s->pivot
is already returning Model instance
and you can use attach
function to that pivot