Если вы хотите загружать файловое отношение, где субъектное отношение свободно, вы можете использовать метод whereHas()
.
$query->with(['subject', 'file'])->whereHas('subject', function ($subQuery) {
$subQuery->where('is_free', 1);
})->get();
Это даст вам все экземпляры вашей модели, у которых есть свободный субъект , с загруженным отношением файла.
Если вы хотите загружать только отношение файла, когда тема свободна, вы должны сделать 2 запроса и объединить их.
$query->with('subject')->whereHas('subject', function ($subQuery) {
$subQuery->where('is_free', 0);
})->get();
Затем вы можете объединить результаты, используя Laravel collection merge()
.