查询: 在邮递员的 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 处返回,但表中有数据。拉拉维尔的主要内容,如果未能解决你的问题,请参考以下文章

为啥 dapper 在进行选择时为 Guid 返回全零但表中的 guid 值设置正确?

我的 postgresql 查询在终端返回 10 行,但邮递员显示错误

Php 变量未传递到 whereHas 函数 - Laravel Eloquent

选择语句,但表是子查询?

mariadb 查询和使用邮递员的不同输出

为啥是 ”。” Access中的查询字段名称中允许但表字段名称中不允许?