我有一个包含IP地址的MySQL表: Table IP addresses
string(3) "192"
string(3) "192"
string(3) "192"
string(2) "80"
我的代码:
public function getListaIndirizzi(Request $request) {
// Paginazione
if (!$request) {
$validator = Validator::make($request->all(), [
"indirizzo1" => "ip",
"indirizzo2" => "ip"
]);
if ($validator->fails()) {
return redirect()->back()->withInput()->withErrors($validator);
}
$indirizzi = IP::whereBetween("IP", [$request->get("indirizzo1"), $request->get("indirizzo2")])->paginate(10);
} else {
$indirizzi = IP::paginate(10);
}
for($i =0; $i < count($indirizzi); $i++) {
LogController::debug((string)($indirizzi[$i]["IP"]));
}
die;
return view("lista_indirizzi", ["indirizzi" => $indirizzi]);
}
我使用Laravel框架
那是我的模型,如何指定IP字段是字符串而不是整数?
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Ip extends Model {
//
protected $table = "ip";
protected $primaryKey = "IP";
public $timestamps = false;
protected $fillable = [
"IP", "Bloccato"
];
protected $hidden = [
'DataCreazione', 'IDOperatoreCreazione', 'DataModifica', 'IDOperatoreModifica'
];
}
我在我的模型上使用此代码解决了我的问题:
public function getIPAttribute($value) {
return (string) $value;
}
答案 0 :(得分:2)
我认为您的问题的根源在于模型中的某个位置。
看起来很像模型中字段的类型是整数,而不是字符串。因此,Laravel(或其ORM)会在从数据库中获取之后以及使用它之前将字符串转换为整数。
的PoC:
<?php
$ip = "192.168.1.1";
echo (int)$ip; // prints "192"
即使您进行调试:
LogController::debug((string)($indirizzi[$i]["IP"]));
评估为(string)(192)
因为$indirizzi[$i]["IP"]
已经是整数“192”。