Laravel Varbinary (IP) с использованием, где не работает - PullRequest
1 голос
/ 16 марта 2019

Я использую varbinary (16) для хранения ips в базе данных, как описано здесь https://stackoverflow.com/a/24270808/5717102.

Для преобразования в удобочитаемый для человека и в двоичный формат я использую inet_ntop и inet_pton,Это хорошо работает, но не работает с запросом where.

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

Чего мне не хватает, разве это не должно работать?Я уже погуглил, но не смог найти никакой полезной информации.

Ответы [ 2 ]

1 голос
/ 17 марта 2019

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()

0 голосов
/ 16 марта 2019

Попробуйте это

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