Laravel varbinary(ip) 无法使用

Laravel varbinary(ip) using with where not working

我正在使用 varbinary(16) 将 ips 存储在数据库中,如此处所述。

为了转换为人类可读和二进制,我使用 inet_ntopinet_pton。 这很好用,但不适用于 where 查询。

MyModel::where('ip', $ip)->get();

我错过了什么,它不应该工作吗?我已经用谷歌搜索了,但找不到任何有用的信息。

试试这个

MyModel::where('ip','=',$ip)->get();

访问器和修改器不适用于查询。所以你应该访问它作为 MyModel::where('ip', inet_pton($ip))->get()

如果您想将逻辑提取出来,您可以进一步只创建一个范围并将逻辑移动到模型中。

public function scopeWhereIp($query, $ip)
{
  return $query->where('ip', inet_pton($ip));
}

并以

访问它

MyModel::whereIp($ip)->get()