'How get conditional nested relationship of parent polymorphic relationship in laravel Eloquent?
$share2 = Share::with(['Post' => function($query){
$query->with(['Postable']);
}])
->whereHas('Post',function ($query){
$query->when('postable_type' == App\Models\User,function ($query){
$query->whereHas('Postable',function ($query){
$query->whereHas('Follower',function ($query){
$query->where('user_id', auth()->check() ? auth()->user()->id : null);
});
});
})->when('postable_type' == App\Models\Agency ,function ($query){
$query->whereHas('Friend', function ($query) {
$query->where('mirror_user_id', auth()->user()->id);
$query->where('status', 'friend');
});
});
// I have used when but it seems useless for my case
})
->where('shareable_type', 'App\Models\User')
->where('shareable_id', auth()->user()->id)
->orWhere('shareable_type', 'App\Models\Agency')
->orWhere('shareable_id', 1)
->get();
I have a polymorphic relationship (Postable
) on Post
model, Postable
return either Agency
model or User
model, then from Postable
I want get Follower
if the Postable
was App\Models\Agency
, or get Friend
if the Postable
was App\Models\User
, my User
has not Follower
relationship because it is for Agency
model, instead User
has Friend
relationship that Agency
has not. now I want to check if the Postable
was App\Models\Agency
then return Follower
relationship if it was User
then return Friend
.
relationships structure:
Share -> Post -> Postable(Agency,User)
Agency->Follower
User->Friend
hope I my explanation will take place in your mind
thanks in advance
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|