嗯,我真的很困惑。
当我检查属性是否存在时,它返回 false。
if (property_exists($pais, 'id'))
// false
但当我调试时它告诉我它就在那里。
print_r($pais->id);
// 1
print_r(property_exists($pais, 'id'));
// false
我是疯了还是我的神经元被烧坏了?
pais 的创建是通过
if (key_exists('country', $data))
$pais = Pais::adicionarPais($data);
(...)
public static function adicionarPais(array $data)
{
return Pais::firstOrCreate(['nome' => $data['country']]);
}
我看到你正在使用 Laravel,所以我猜这是 Eloquent 模型。他们可能使用魔术方法从数据库列创建动态属性和方法。看看这里:http://php.net/manual/en/language.oop5.overloading.php http://php.net/manual/en/language.oop5.overloading.php
因此,每次您请求属性时,他们都会检查是否有任何列或关系并返回,而不是拥有真实的属性。
您可以使用以下命令获取模型属性getAttributes()
方法 (https://github.com/Illuminate/database/blob/master/Eloquent/Concerns/HasAttributes.php#L851 https://github.com/illuminate/database/blob/master/Eloquent/Concerns/HasAttributes.php#L851)
class Pais
{
public function __get($name) {
if ($name == 'id') {
return 1;
}
}
}
$pais = new Pais();
var_dump($pais->id); // int(1)
var_dump(property_exists($pais, 'id')); // bool(false)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)