我正在使用PHP和laravel框架创建一个web应用程序。我的代码中有以下类。
class ReportField extends Model
{
//
public $name;
public $quantity;
public $unitCost;
public $totalCost;
public $estimation;
}
我使用序列化将这些对象的数组写入数据库。
$fieldsList=array();
foreach($items as $item){
if($item->sale_type == 1){
$reportField=new ReportField();
$reportField->name=$item->item_name;
$reportField->unitCost=$item->unit_cost;
array_push($fieldsList,serialize($reportField));
}
}
$gpForecast=new GPForecast();
$gpForecast->project_id=$project_id;
$gpForecast->fieldList=(serialize($fieldsList));
$gpForecast->save();
现在取消序列化后,我想将数组中的那些对象转换回RecordField对象。
$gpForecast=GPForecast::all()->first(); //here i read one of array i write to database
$fieldList=unserialize($gpForecast->fieldList );
foreach($fieldList as $field){
echo $field->name;
}
但后来我得到了错误Trying to get property of non-object
,那么我该如何更正呢?
这个:array_push($fieldsList,serialize($reportField)
我认为如果你在提交之后进行$gpForecast->fieldList=(serialize($fieldsList));
,那就没用了。这也可能导致你得到空条目-这里:
foreach($fieldList as $field){
您正试图获取序列化数据
(在这里您可以序列化它们:array_push($fieldsList,serialize($reportField));
)。
这意味着您不会得到ReportField
对象,但可能会得到序列化的数据。