【问题标题】:Laravel Eloquent, apply select on my queries in whereHasLaravel Eloquent,在 whereHas 中对我的查询应用选择
【发布时间】:2020-04-22 04:27:50
【问题描述】:

这是我的代码:

$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);

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

【问题讨论】:

  • 我认为选择需要在 with 内,而不是 whereHas

标签: php laravel eloquent laravel-query-builder


【解决方案1】:

选择需要添加到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']);}
])

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 2021-05-25
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多