【问题标题】:Laravel 5 + Eloquent toJson/toArray causes Strange Segmentation FaultsLaravel 5 + Eloquent toJson/toArray 导致奇怪的分割错误
【发布时间】:2015-06-26 07:38:51
【问题描述】:

我不想回答我自己的问题,所以也许你可以帮我找到解决这个问题的方法。

我有一些属于彼此的雄辩模型,我通过这样的关联设置它们。都是正常的东西。

不幸的是,此过程导致 $device 无法正常工作。您可以在下面看到可以访问各个值,但任何形式的 jsonification 都会破坏服务器而不会出错。

$device = $truck->device;
if(is_null($device) || empty($device)) {
    $device = new Devices;
}
$device->truck()->associate($truck);
$device->fleet()->associate($fleet);
$device->serial = $device_input['serial'];

$device->save();
$truck->device()->associate($device);
$truck->save();

error_log( $device->id );               //OK
error_log( $truck->device->id );        //OK
error_log( $device->toJson() );         //ERROR SEGMENTATION FAULT
error_log( $truck->toArray() );         //ERROR SEGMENTATION FAULT
error_log( $truck->device->toJson() );  //ERROR SEGMENTATION FAULT
error_log( $truck->device->toArray() ); //ERROR SEGMENTATION FAULT
error_log( json_encode($device) );             //ERROR SEGMENTATION FAULT
error_log( json_encode($truck->device) );      //ERROR SEGMENTATION FAULT

【问题讨论】:

    标签: php laravel eloquent laravel-5


    【解决方案1】:

    Laravel 没有正确处理错误。

    首先,检查您的桌子。当我打印我的设备表时,我可以看到每次运行它时都会创建新设备,这意味着关联显然不起作用。

    我在 if 语句中移动了我的关联,例如:

    if(is_null($device) || empty($device)) {
        $device = new Devices;
        $device->truck()->associate($truck);
        $device->fleet()->associate($fleet);
    }
    

    所以这种关联只会在设备创建时发生。 您会认为将关联设置为已关联的对象不会破坏它。

    奇怪的是,值可以单独访问,但不能作为 json 访问。如果有人知道任何 laravel 开发人员或将其作为官方错误报告发布的地方,请告诉我

    【讨论】:

      猜你喜欢
      • 2015-04-10
      • 2012-10-24
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      相关资源
      最近更新 更多