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']);}
])
这是我的代码:
$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']);}
])