不同数据库链接情况下的【关联】的bug/缺陷

关联中以一对一为例,我有一个StEnt,一个GkEnt,实际上是两个一样的表,就是处于不同的数据库连接。如下:
class StEnt extends BaseEloquent
{
protected $table = "st_ent";
protected $connection = "con_a";

public function gk_ent()
{
return $this->hasOne('App\Models\GkEnt', 'id', 'ent_id');
}
}
class GkEnt extends BaseEloquent
{
protected $table = "gk_ent";
protected $connection="con_b";
}
表示一个st有一个gk,然后是查询:
StEnt::with('gk_ent')>first(); //with正常
StEnt::with('gk_ent')->has('gk_ent')->first();//has就出bug了

因为has的 connect是拿的StEnt的,但是这个connect上面又没有gk_ent表,laravel源码如下
protected function addHasWhere(Builder $hasQuery, Relation $relation, $operator, $count, $boolean)
{
$this->mergeWheresToHas($hasQuery, $relation);

if (is_numeric($count)) {
$count = new Expression($count);
}

return $this->where(new Expression('('.$hasQuery->toSql().')'), $operator, $count, $boolean);
}

嵌套查询源码来自$this->where(new Expression('('.$hasQuery->toSql().')')里面的toSql()
这个是不会带上gk_ent的数据库名称的。所以出来的结果就会类似是
select * from st_ent where (select count(*) from gk_ent where gk_ent.id = st_ent.ent_id)

而不是
select * fro st_ent where (select count(*) from database_b.gk_ent where gk_ent.id = st_ent.ent_id)

如何跨库has,求大神指教
已邀请:

要回复问题请先登录注册