Я использую Фрактальные Трансформаторы в Laravel 5. У меня есть:
namespace App\Transformers;
use App\Models\Cake;
use League\Fractal\TransformerAbstract;
class CakeTransformer extends TransformerAbstract
{
protected $availableIncludes = [
'user',
'description'
];
public function transform(Cake $cake)
{
$ar = [
'name' => $cake->name,
'url_name' => $cake->url_name,
'user' => $cake->user->screenname,
'date_created' => $cake->created_at
];
return $ar;
}
public function includeUser(Cake $cake)
{
return $this->item($cake->user, new UserTransformer());
}
public function includeDescription(Cake $cake) {
return $cake->description;
}
}
Выше не работает, потому что includeDescription
не возвращает правильный тип объекта, но из вышесказанного вы можете увидеть, что я пытаюсь сделать.
Например, в моем поиске я хочу вернуть гораздо меньше данных, чем если бы я загружал целую страницу об элементе поиска. Например. для поиска я не хочу загружать описание, но для страницы, которая содержит подробную информацию о продукте, я бы хотел.
Как мне этого добиться?
Задача ещё не решена.
Других решений пока нет …