Laravel Dingo/Api 学说
Laravel Dingo/Api Doctrine
- 我使用 Laravel 和 Dingo/Api 构建一个 RESTful API (https://github.com/dingo/api)
- 我使用 Doctrine2 而不是 Eloquent ORM (https://github.com/laravel-doctrine/orm)
- 实体是从XML-Annotations
生成的
我很纠结,因为 Dingo 似乎只转换 Eloquent 集合和对象。我可以使用 Collection::make() 方法解决 returning 集合。
但是怎么可能 return 单个用户对象呢?(参见方法 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);
}
}
幸运的是,我现在找到了可行的解决方案。我想分享这个并希望能够帮助其他人:
return $this->response->item($user, new UserTransformer());
- 我使用 Laravel 和 Dingo/Api 构建一个 RESTful API (https://github.com/dingo/api)
- 我使用 Doctrine2 而不是 Eloquent ORM (https://github.com/laravel-doctrine/orm)
- 实体是从XML-Annotations 生成的
我很纠结,因为 Dingo 似乎只转换 Eloquent 集合和对象。我可以使用 Collection::make() 方法解决 returning 集合。
但是怎么可能 return 单个用户对象呢?(参见方法 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);
}
}
幸运的是,我现在找到了可行的解决方案。我想分享这个并希望能够帮助其他人:
return $this->response->item($user, new UserTransformer());