在对象数组中添加属性和值

时间:2016-01-06 17:11:14

标签: php laravel

我在php OOP中非常新,而且我使用laravel有我选择的框架。我创建一个对象用户并创建记录,我唯一要做的就是检查我的一个输入字段(不是必需的)是否已设置,如果设置的是我必须在用户对象中添加,但是如何我可以在现有对象中添加此属性(手机)和值,我做得对吗?

代码:

$user = User::create([
    'email'              => $userDat['email'],
    'name'               => $userDat['name'],
    'surname'            => $userDat['surname'],
]);

if (isset($userDat['mobilephone'])) {
    $user->mobilephone = $userDat['mobilephone'];
}

3 个答案:

答案 0 :(得分:0)

如果你必须将属性添加到对象中,我相信你可以将它作为一个数组转换,添加你的属性(作为一个新的数组键),然后将它作为一个对象强制转换。你唯一一次遇到stdClass对象(我相信)就是当你把一个数组作为一个对象或者你从头开始创建一个新的stdClass对象时(当然还有你json_decode()的东西 - 愚蠢的我忘了!)。 / p>

而不是:

print.AsIs

你会这样做:

class(I(3))
#[1] "AsIs"

或者如果您已经有一个现有的stdClass对象:

$foo = new StdClass();
$foo->bar = '1234';

另外作为1班轮:

$foo = array('bar' => '1234');
$foo = (object)$foo;

或者你可以这样做

$foo = (array)$foo;
$foo['bar'] = '1234';
$foo = (object)$foo;

答案 1 :(得分:0)

有几种方法可以做到。

提前准备阵列

$data = [
    'email'              => $userDat['email'],
    'name'               => $userDat['name'],
    'surname'            => $userDat['surname'],
];

if ($phone = array_get($userDat, 'mobilephone')) {
    $data['mobilephone'] = $phone;
}

User::create($data);

首先创建对象然后保存它

$user = new User([
    'email'              => $userDat['email'],
    'name'               => $userDat['name'],
    'surname'            => $userDat['surname'],
]);

if ($phone = array_get($userDat, 'mobilephone')) {
    $user->mobilephone = $phone;
}

$user->save();

目前正在进行,但需要额外查询(建议不要使用)

$user = User::create([
    'email'              => $userDat['email'],
    'name'               => $userDat['name'],
    'surname'            => $userDat['surname'],
]);

if ($phone = array_get($userDat, 'mobilephone')) {
    $user->mobilephone = $phone;

    $user->save();
}

答案 2 :(得分:0)

  

如何在现有对象中添加此属性(手机)和值,我做得对吗?

这在很大程度上取决于您使用的框架。通常,您可以向PHP中的任何对象添加任意属性(这并不意味着您总是应该)。

在您的情况下,您使用的是Laravel附带的Eloquent框架,实际依赖动态分配的对象属性绝对正确使用 。这在official documentation中有详细记录。请注意,您可能需要在某个时刻调用$user->save()来实际保存您的用户对象(感谢Ben的提示)。

请注意,您也可以通过以下方式分配User实例的所有属性:

$user = new User();
$user->email   = $userDat['email'];
$user->name    = $userDat['name'];
$user->surname = $userDat['surname'];

if (isset($userDat['mobilephone'])) {
    $user->mobilephone = $userDat['mobilephone'];
}

$user->save();