- Я использую Laravel с Dingo/Api для создания RESTful API (https://github.com/dingo/api)
- Я использую Doctrine2 вместо Eloquent ORM (https://github.com/laravel-doctrine/orm )
- Сущности генерируются из XML-аннотаций
Я борюсь, потому что Динго, кажется, преобразует только коллекции и объекты Eloquent. Я мог решить вернуть коллекцию с помощью метода Collection::make().
Но как можно вернуть один пользовательский объект? (см. метод getUser())
<?php
namespace App\Http\Controllers;
use App\Entities\User;
use App\Transformer\UserTransformer;
use Dingo\Api\Http\Response;
use Dingo\Api\Routing\Helpers;
use Doctrine\ORM\EntityManagerInterface;
use App\Http\Requests;
use Illuminate\Routing\Controller;
use Illuminate\Support\Collection;
class UsersController extends Controller
{
use Helpers;
protected $em;
/**
* UsersController constructor.
* @param $em
*/
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function getUser($id)
{
$user = $this->em->getRepository(User::class)->findOneBy(array('id' => $id));
return $user;
}
public function getUsers()
{
$user = $this->em->getRepository(User::class)->findAll();
return $this->response->collection(Collection::make($user), new UserTransformer);
}
}