You would need a whereHas, or a join
Using whereHas, something like;
use Illuminate\Database\Eloquent\Builder;
$this->projects = Project::query()
->whereHas('details', function(Builder $q){
$q->whereBetween('start', [$this->start_date, $this->end_date]);
})
->with('details')
->get();
using a join would be more efficient but a little more complex
$this->projects = Project::query()
->join('project_details', 'project_details.project_id','=', 'projects.id')
->whereBetween('project_details.start', [$this->start_date, $this->end_date])
->with('details')
->get();