PHP IP地址在循环中被截断
我有一个包含IP地址的MySQL表: 当我在PHP中循环地址时,它们将被截断:PHP IP地址在循环中被截断,php,mysql,laravel-5,Php,Mysql,Laravel 5,我有一个包含IP地址的MySQL表: 当我在PHP中循环地址时,它们将被截断: string(3) "192" string(3) "192" string(3) "192" string(2) "80" 我的代码: public function getListaIndirizzi(Request $request) { // Paginazione if (!$request) { $validator = Validator::make($re
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(或它的ORM)将在从数据库中获取字符串之后和使用它之前将其转换为整数 PoC:
计算结果为
(string)(192)
,因为$indirizzi[$i][“IP”]
已经是整数“192”。LogController::debug(($indirizzi[$i][“IP”])是一个打印参数变量转储的函数我想知道Laravel怎么会认为该字段是整数?以前在getIPAttribute()
函数中是否有(int)
?
<?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;
}
<?php
$ip = "192.168.1.1";
echo (int)$ip; // prints "192"
LogController::debug((string)($indirizzi[$i]["IP"]));