Laravel Query在IPv4 Vs上的表现不同。 IPv6环境

时间:2017-10-10 19:36:48

标签: php laravel laravel-5 ip laravel-5.1

我有一个奇怪的情况,这是我在使用Laravel时从未见过的。 我在不同的设置上有相同的代码库,在IPv4 VM中有1个,在IPv6 VM中有1个。

这是数据库中的数据。

enter image description here

这就是我通常查询它的方式。

// $ap = '102030405067';
$gw = Gateway::where('cpe_mac','=',$ap)->first();
dd($gw);

在我的IPv4设置中,我得到了:

{#541 ▼
  +"id": 1
  +"account_id": "50"
  +"cpe_mac": "102030405067"
  +"gw_id": "1956692524588882"
  +"gw_secret": "zUIyaQfCntob2thL6uR4uQfBvmlCei-5q_oVSJnyeSc"
  +"fb_wifi_enable": "1"
  +"created_at": "2017-10-10 14:41:17"
  +"updated_at": "2017-10-10 14:41:17"
}

在我的IPv6设置中,我得到了:

null

尝试#2

dd(Gateway::all());

结果

在IPv4中,我获得了所有返回的记录。

enter image description here

在IPv6中,我得到了这个空集合

Collection {#542 \u25bc #items: [] }

enter image description here

最令人困惑的部分是,其他表似乎工作正常,这gateways似乎是唯一导致问题的表。

我检查了我的网关型号名称和表格名称。他们拼写相关。

  • 你们之前见过这样的事吗?

  • 如何进一步调试此问题?

  • 我还应该尝试什么?

2 个答案:

答案 0 :(得分:2)

说实话 - 我认为不可能。

确保$ap在两种情况下都包含完全相同的值。您可以使用trim($ap),以防双重确定它不包含额外的特殊字符。

还要确保在两个VM上您在数据库中具有相同的数据。现在看来,在一个虚拟机中,您在数据库中拥有数据,而在第二个虚拟机中,您似乎没有。

修改

Laravel不可能存在直接问题,所以:

  • 确保在两个虚拟机中您的数据库中都有数据 - 在两个虚拟机上运行SELECT * FROM gateways以验证您是否有任何记录(您还没有提到两个虚拟机都在使用相同的数据库,所以我假设他们是不同的)
  • 在两个VM中确保您在.env文件
  • 中设置了有效的数据库 VMS运行php artisan config:clear上的
  • 只是为了确保您没有缓存无效的数据库连接

答案 1 :(得分:0)

什么是IP地址?什么是IPv6,IPv4协议,它们之间有什么区别?

什么是IP地址?

IP(Internet协议)是将数据从一台计算机发送到Internet上另一台设备的协议。互联网上的每台计算机都具有与互联网上的所有其他计算机不同的IP地址。 IP地址是网络上计算机或设备的数字地址和标识符。每个设备都有一个IP地址并用于通信。

Internet协议版本4(IPv4)

Internet协议版本4(IPv4)是Internet协议(IP)的第四个版本。由于该协议支持所有设备,因此今天最常用于通过各种网络进行数据通信。IPv4于1970年发明。

Internet协议版本6(IPv6)

Internet协议版本6(IPv6)这是Internet的最新更新版本协议。这样就为计算机提供了一个识别和定位系统,并通过互联网路由流量。 IPv6于1998年发明。

IPv4与IPv6之间的差异

IPv4

1.IPv4是一个32位地址。 2.IPv4是编号地址方法。

IPv6

1.IPv6是128位地址。 2.IPv6是字母数字地址方法。

有关更多信息,请click在这里