[Laravel8.16.0] belongToリレーション先の値をwhereで検索

### whereHas
app/Models/Order.php

1
2
3
public function product1(){
        return $this->belongsTo('App\Models\Product', 'product_id1', 'id');
    }

controller

1
2
3
4
$orders = Order::whereHas('product1', function($q){
            $q->where('name', 'like', '%車%');
        })->get();
        dd($orders);

### orWhreHas
複数のbelongsToがある場合
app/Models/Order.php

1
2
3
4
5
6
public function product1(){
    return $this->belongsTo('App\Models\Product', 'product_id1', 'id');
}
public function product2(){
    return $this->belongsTo('App\Models\Product', 'product_id2', 'id');
}

controller

1
2
3
4
5
6
$orders = Order::whereHas('product1', function($q){
            $q->where('name', 'like', '%セット%');
        })->orWhereHas('product2', function($q){
            $q->where('name', 'like', '%セット%');
        })->get();
        dd($orders);

OK
で、本当にやりたいのは、whrehasを2階層にしたものをorWhreHasで回したい。できるのか。。。。