にゃーん☆ฅ^•ω•^ฅ
ハマったこと、つまづいたことにゃどの記録
LaravelでローカルスコープをjoinSubすると型があわにゃい2024-02-01
🐈 ハマったこと
Modelはこんにゃ感じ
class City extends Model {
public function scopeNishitama($query) {
return $query->where('area', '=', 'Nishitama');
}
これをjoinSub
すると型があわにゃい
DB::table('event')->joinSub(City::nishitama(), 'city', function ($join) {
$join->on('event.city', '=', 'city.id');
})
- ローカルスコープが返す型:
\Illuminate\Database\Eloquent\Builder
- joinSubが期待する型:
\Illuminate\Database\Query\Builder
・・・🐈⬛・・・🐈⬛・・・🐈⬛・・・Eloquent\Builder
からQuery\Builder
を取得して渡す
DB::table('event')->joinSub(City::nishitama()->getQuery(), 'city', function ($join) {
$join->on('event.city', '=', 'city.id');
})
7系まで発生。8系で修正されている
https://github.com/laravel/framework/blob/8.x/src/Illuminate/Database/Query/Builder.php#L513