こんにちは、なかしーです。
今日もLaravel関連です。
Eloquentはとても便利ですよね。
この前、とある処理でmorph先のモデルをひとつ以上持っているモデルだけ引っ張ってこいよ!という処理を考えていた時に、こちらのページにお世話になりました。(https://teratail.com/questions/5416)
こちらのオブジェクト側(仮にHogeとする)は以下の関係を持っていて、このtop_photos()を一つでも持っているHogeを連れて来い!という事がやりたかったわけです。
ということで、そういうスコープを以下のように作りました。
public function scopeHasphoto( $query ) { return $query->with('top_photos')->whereHas('top_photos', function($q) { $q->where('top_imageables.top_imageable_type', '=', 'Hoge'); }); }
パフォーマンスがどうかってのはあんまりまだ考えれて無いですが、とりあえず動いたので良しとする。