@sodasix 恩恩,就是有时就一个新闻,就需要好几种返回的方式,就得写好几个transformer
@sodasix 恩,这个不是主要问题,主要是列表和详细的返回字段不一致,没有办法使用同一个transformer。还有就是关联到其他表的情况。
@JellyBool 恩,不需要的字段设置空会有很多多余的空字段。而且不光是字段,还有些关联表数据。暂时就先这样了,理解起来也不算麻烦。
暂时算是解决了,写一下解决的办法。谁有更好的办法可以和我说下。
第一个问题是区分为两个transformer,不多说,第二个关联多个评论的解决代码为:
NewsTransformer.php
public function transform($item)
{
return [
'id' => $item->id,
'title' => $item->title,
'created_at' => $item->created_at . '',
'content' => $item->content,
'comments' => $this->transformComments($item->comments()->take(3)->get()),
'comments_count' => $item->comments->count(),
];
}
public function transformComments($comments)
{
//这里不可以使用array_map,转换为数组后会导致NewsCommentsTransformer里面获取错误。
$array = [];
foreach ($comments as $news_comments){
$array[count($array)] = (new NewsCommentsTransformer)->transform($news_comments);
}
return $array;
}
NewsCommentsTransformer.php
public function transform($item)
{
return [
'id' => $item->id,
'content' => $item->content,
'userid' => $item->user_id,
'username' => $item->user->name,
'created_at' => $item->created_at . ''
];
}
我开发一个api,使用的是 dingo/api 这个库,比如news,会有 api/news 和 api/news/1 这种。要返回字段并不一样,比如 api/news 不会返回content
,评论等。写 transform 的时候就没办法区分列表或者是单一的新闻。我现在的办法是分成两个转换类 NewsListTransformer
和 NewsTransformer
来使用。不知道还有没有更好的办法。
另外还有一个问题是,新闻是有评论的,读取单个新闻的时候,会一起读出来3条新闻评论。这个评论也是需要转换的,单条的可以通过 (new CommentsTransformer)->transform($item)
来转换,多条的这个办法就行不通了。
检查路由中是否加入了名为web的middleware..
删除记录是用的DELETE方式提交的,链接实现不了这种方式,你需要在route里面加上一条GET记录,重写一下删除的url。如Route::get('test/destroy/{id}', 'TestController@destroy');
这样。
到 caouecs/Laravel-lang 搞一个zh-CN的语言包,放到 resources/lang 里面。然后在 config/app.php 里面把 locale
设置成 zh-CN。就行了。
在本地更新,git push origin master
到coding(之前说错了),然后在阿里云里面git pull origin master
。
你已经clone过了,git pull
不需要。
我的意思是在提交到了coding了,阿里云也更新吗?在阿里云里面运行git pull
就行了。