こんにちは、なかしーです。
今日も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');
});
}

パフォーマンスがどうかってのはあんまりまだ考えれて無いですが、とりあえず動いたので良しとする。