Php 在Laravel5分形中使用parseincludes

Php 在Laravel5分形中使用parseincludes,php,laravel,transformer,thephpleague,thephpleague-fractal,Php,Laravel,Transformer,Thephpleague,Thephpleague Fractal,使用parseIncludes进行斗争 我有两张桌子,财产和星期。每处房产都有好几个星期。使用分形,我可以返回包含周集合的属性项。我想做的是使用parseIncludes,因此周的返回是可选的 PropertyTransformer.php <?php namespace App\Transformer; use App\Models\Property; use League\Fractal\TransformerAbstract; class PropertyTransformer

使用parseIncludes进行斗争

我有两张桌子,财产和星期。每处房产都有好几个星期。使用分形,我可以返回包含周集合的属性项。我想做的是使用parseIncludes,因此周的返回是可选的

PropertyTransformer.php

<?php
namespace App\Transformer;

use App\Models\Property;
use League\Fractal\TransformerAbstract;


class PropertyTransformer extends TransformerAbstract
{

    protected $availableIncludes = [
        'week'
    ];

    public function transform(Property $property)
    {
        return [
            'id'                => (int) $property['PropertyID'],
            'PropertyName'      => $property['PropertyName'],
            'ExactBeds'         => (int) $property['ExactBeds'],
            'weeks'             => $property->week
        ];
    }

    /**
     * Include Week
     *
     * @return League\Fractal\ItemResource
     */
    public function includeWeek( Property $property )
    {
        $week = $property->week;

        return $this->item($week, new WeekTransformer);
    }
}
<?php
namespace App\Transformer;

use App\Models\Week;
use League\Fractal;

class WeekTransformer extends Fractal\TransformerAbstract
{


    public function transform(Week $week)
    {
        return [
            'Week'          => $week['week'],
            'Available'     => $week['available'],
            'Price'         => (int) $week['price'],

        ];
    }

}

您的问题在这行:
return$fractal->createData($resource)->parseIncludes('weeks')->toJson()

createData()
返回
\League\Fractal\Scope
并且它没有
parseInlcudes
方法

您已经在此处调用了
parseIncludes

if (isset($_GET['include'])) {
    $fractal->parseIncludes($_GET['include']);
}
因此,只需删除
return
语句中对它的第二个调用:

return$fractal->createData($resource)->toJson()

您的问题在这行:
return$fractal->createData($resource)->parseIncludes('weeks')->toJson()

createData()
返回
\League\Fractal\Scope
并且它没有
parseInlcudes
方法

您已经在此处调用了
parseIncludes

if (isset($_GET['include'])) {
    $fractal->parseIncludes($_GET['include']);
}
因此,只需删除
return
语句中对它的第二个调用:

return$fractal->createData($resource)->toJson()

您的问题在这行:
return$fractal->createData($resource)->parseIncludes('weeks')->toJson()

createData()
返回
\League\Fractal\Scope
并且它没有
parseInlcudes
方法

您已经在此处调用了
parseIncludes

if (isset($_GET['include'])) {
    $fractal->parseIncludes($_GET['include']);
}
因此,只需删除
return
语句中对它的第二个调用:

return$fractal->createData($resource)->toJson()

您的问题在这行:
return$fractal->createData($resource)->parseIncludes('weeks')->toJson()

createData()
返回
\League\Fractal\Scope
并且它没有
parseInlcudes
方法

您已经在此处调用了
parseIncludes

if (isset($_GET['include'])) {
    $fractal->parseIncludes($_GET['include']);
}
因此,只需删除
return
语句中对它的第二个调用:

return$fractal->createData($resource)->toJson()

谢谢Armen,你说得很对。我找到了一种解决方法,它能让我摆脱气味。问题出在别处,需要parseincludes,正如您所说,它不是作用域上的方法。感谢您的帮助。请确保您确实有
protected$availableIncludes=['xxx']
谢谢Armen,您说得很对。我找到了一种解决方法,它能让我摆脱气味。问题出在别处,需要parseincludes,正如您所说,它不是作用域上的方法。感谢您的帮助。请确保您确实有
protected$availableIncludes=['xxx']
谢谢Armen,您说得很对。我找到了一种解决方法,它能让我摆脱气味。问题出在别处,需要parseincludes,正如您所说,它不是作用域上的方法。感谢您的帮助。请确保您确实有
protected$availableIncludes=['xxx']
谢谢Armen,您说得很对。我找到了一种解决方法,它能让我摆脱气味。问题出在别处,需要parseincludes,正如您所说,它不是作用域上的方法。感谢您的帮助。请确保您确实有受保护的$availableIncludes=['xxx']