查询: 在邮递员的 whereHas 处返回,但表中有数据。拉拉维尔

Posted

技术标签:

【中文标题】查询: 在邮递员的 whereHas 处返回,但表中有数据。拉拉维尔【英文标题】:query: return at whereHas in postman but data there is in table. Laravel查询: 在邮递员的 whereHas 处返回,但表中有数据。拉拉维尔 【发布时间】:2020-03-26 22:20:57 【问题描述】:

在 CitizenService 中有 service_id 但此查询在邮递员中返回查询:。在模型连接的服务()中;

$query = CitizenService::whereHas('service', function (Builder $query)  
        $query->where('service.id', 1);
    );
    return response()->json(['query' => $query]);

【问题讨论】:

【参考方案1】:

您需要在 where() 子句中使用id 而不是service.id

你可以试试这个:

$query = CitizenService::whereHas('service', function (Builder $query)  
    $query->where('id', 1);
);
return response()->json(['query' => $query]);

【讨论】:

【参考方案2】:

您需要实际执行查询。您已经构建了一个查询,但尚未运行它。

$result = $query->get();

或使用您的代码:

$query = CitizenService::whereHas('service', function ($query)  
    $query->where('service.id', 1);
)->get();

return response()->json(['query' => $query]);

你不需要对闭包的参数进行类型提示,但如果你确定它是Illuminate\Database\Eloquent\Builder

【讨论】:

那么你必须弄清楚那个错误是什么......你没有执行你的查询,你只是返回一个查询生成器而不是结果【参考方案3】:

好像你正在返回一个查询生成器

看看这个

$query = CitizenService::whereHas('service', function ($query)  
    $query->where('id', 1);
)->get();

return response()->json(['query' => $query]);

确保你定义了正确的关系

更多信息querying on relationship

【讨论】:

以上是关于查询: 在邮递员的 whereHas 处返回,但表中有数据。拉拉维尔的主要内容,如果未能解决你的问题,请参考以下文章