使用PHP和laravel框架在MySql数据库中存储对象数组

时间:2016-05-01 17:48:32

标签: php laravel laravel-5

我正在使用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那么我怎么能纠正这个错误呢?

1 个答案:

答案 0 :(得分:1)

这:array_push($fieldsList,serialize($reportField)如果您在尝试后$gpForecast->fieldList=(serialize($fieldsList)); 做的话,我认为没用。这也可能导致你输入空白 - 这里:

foreach($fieldList as $field){

您正试图获取序列化数据

(在这里序列化它们:array_push($fieldsList,serialize($reportField));)。

这意味着您不会获得ReportField个对象,但可能会序列化数据。