Php 在Laravel5分形中使用parseincludes
使用parseIncludes进行斗争 我有两张桌子,财产和星期。每处房产都有好几个星期。使用分形,我可以返回包含周集合的属性项。我想做的是使用parseIncludes,因此周的返回是可选的 PropertyTransformer.phpPhp 在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
<?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']