Laravel Eloquent,在 whereHas 中对我的查询应用 select

Laravel Eloquent, apply select on my queries in whereHas

这是我的代码:

$prestations = Prestation::with('service','facility','conciergeries.network')
            ->whereHas('service', function ($query) use ($searchService) {
                $query->addSelect('id','name')->where('name', 'regexp', "/$searchService/i");
            })  
            ->whereHas('facility', function ($query) use ($searchPartenaire) {
                $query->addSelect('id','name')->where('name', 'regexp', "/$searchPartenaire/i");
            })
            ->whereHas('conciergeries.network', function ($query) use ($searchFiliale) {
                $query->addSelect('id','name')->where('name', 'regexp', "/$searchFiliale/i");
            })
                ->where('name', 'regexp', "/$search/i")
                ->orderBy($orderBy, $orderDirection)
                ->paginate(50);

我只想获取 "service"、"facility" 和 "conciegeries.network" 的名称和 ID。 我尝试使用 select('id','name');select(['id','name']);addSelect('id','name');pluck('id', 'name'); 但我得到了所有数据。 你有替代解决方案吗? 谢谢!

Select 需要添加到 with,而不是 whereHas。试试这个:

Prestation::with(['service' => function($query) { $query->select(['id','name']);},
    'facility' => function($query) { $query->select(['id','name']);},
    'conciergeries.network' => function($query) { $query->select(['id','name']);}
])