属性不会添加到stdClass对象中

时间:2017-07-26 09:08:57

标签: php

我正在laravel 5.3中开发一个Web应用程序。我得到的问题是属性不会在stdClass对象中累加,但是你可以看到我在代码中明确设置/在对象中添加新属性的代码。

有问题的代码

$('input[type=text]').each(
    function(index)
    {  
       console.log(' text: ' + $(this).val() +  ' replace: ' +  $(this).val().replace( new RegExp("(file\:\/\/test)","gm"),"/test.abc.local") );
    }
);

在上面的代码中,您可以清楚地看到我正在为1- $sender = Sender::where('id', $this->senderId)->first(); 2- if ($sender != null) { 3- var_dump($sender->bundle); 4- $sender->bundle->latitude = $this->lat; 5- $sender->bundle->longitude = $this->long; 6- $sender->bundle->location = $response->formattedAddress(); 7- var_dump($sender->bundle); 8- $sender->save(); 9- error_log('resolved'); 10- } else { 11- error_log('no sender'); 12- } 对象设置一些新属性。

bundle

但是在输出中你可以清楚地看到它没有加起来。代码基本上在laravel队列中运行。在上面的代码中,$sender->bundle->latitude = $this->lat; $sender->bundle->longitude = $this->long; $sender->bundle->location = $response->formattedAddress(); 是laravel eloquent模型,属性包通过laravel mutators进行$sender

mutator code

json_decode

输出上述有问题的代码

public function setBundleAttribute($value) {
    $this->attributes['bundle'] = json_encode($value);
}

public function getBundleAttribute($value) {
    return json_decode($value);
}

解决了问题

laravel 访问者&突变者导致问题。 每当我们分别得到或设置属性时,就会调用Accessor和Mutator,在我的情况下,每当我尝试访问object(stdClass)#686 (3) { #output of line 3 ["city"]=> string(0) "" ["province"]=> string(0) "" ["country"]=> string(0) "" } object(stdClass)#686 (3) { #output of line 7 ["city"]=> string(0) "" ["province"]=> string(0) "" ["country"]=> string(0) "" } [2017-07-25 16:11:03] Processed: App\Jobs\LocationResolverQueue resolved 时,mutator都会调用,但是因为我设置的是$sender->bundle->property而不是{ {1}} 我解决了像

这样的问题
$sender->bundle->property

0 个答案:

没有答案