用whereHas两个表关联查询时,id超过100000关联不成功,小于100000可以。

用whereHas或者has进行两个表关联查询,关联字段id超过100000关联不成功,小于100000可以。with可以关联到。

public function user(){
  return $this->hasOne(User::class,'id','user_id')->withTrashed();
}

$data=Store::query();
$data->with('user');
$data->whereHas('user',function($query){
$query->where('status',0);
});
return $data->count();

Tips:两个表不在同一个服务器上

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

with 是分两条语句查询的,会分别连接对应的数据库,所以没问题。而 whereHashas 是一条语句执行完,但两个表在两个服务器,所以会有问题

2年前 评论
讨论数量: 4

会不会是你 status 字段的条件影响了, 先看看原始的 sql 语句是否能查询到数据

select  * from stores where exists (select * from users where stores.user_id = users.id and status = 0) and deleted_at is null
2年前 评论
PeterSin (楼主) 2年前
circle

where has 跨服务器有坑

2年前 评论

with 是分两条语句查询的,会分别连接对应的数据库,所以没问题。而 whereHashas 是一条语句执行完,但两个表在两个服务器,所以会有问题

2年前 评论

这个问题是id超过100000关联不到,还是whereHas/has和with的机制问题 导致关联不到?

2年前 评论
PeterSin (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!