【问题标题】:Laravel varbinary(ip) using with where not workingLaravel varbinary(ip) 在不工作的地方使用
【发布时间】:2019-08-07 14:48:24
【问题描述】:

我正在使用 varbinary(16) 将 ips 存储在数据库中,如此处所述 https://stackoverflow.com/a/24270808/5717102

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

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

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

【问题讨论】:

  • Accessor 和 Mutator 在查询时不起作用。试试MyModel::where('ip', inet_pton($ip))->get();
  • 不知道,谢谢提示。现在可以正常工作

标签: php mysql laravel ip varbinary


【解决方案1】:

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

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

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

并以身份访问它

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

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

    • 没有区别,因为如果没有提供操作符,laravel 默认使用 = 操作符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2015-03-18
    • 2017-08-09
    • 2016-07-25
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多