【发布时间】:2018-02-14 22:17:47
【问题描述】:
我有以下代码:
模型
class Document extends Model
{
use OwnedByCustomer, OwnedByUser;
public function document_type() {
return $this->belongsTo(DocumentType::class);
}
}
和
class DocumentType extends Model
{
use HasTranslations;
public $translatable = ['name'];
}
资源
use Illuminate\Http\Resources\Json\Resource;
class DocumentResource extends Resource {
public function toArray($request) {
return [
'id' => $this->id,
'created_at' => $this->created_at,
'document_type' => DocumentType::make($this->document_type),
'description' => $this->description,
'batch_number' => $this->batch_number,
'size' => $this->size,
'file_name' => $this->file_name
];
}
}
和 使用 Illuminate\Http\Resources\Json\Resource;
class DocumentTypeResource extends Resource {
public function toArray($request) {
return [
'id' => $this->id,
'enum' => $this->enum,
'name' => $this->getTranslations('name')
];
}
}
然后我有一个控制器来执行此操作:
class DocumentController extends Controller {
public function index() {
$query = Document::query();
$query->withoutGlobalScope(OwnedByUser::class);
return DocumentResource::collection($query->paginate());
}
这是我一直在广泛使用的常见设置,没有太多问题。然而,由于某种原因,该集合没有被包装在 json 数据属性中,并且请求中也缺少链接和元属性。 此外,返回的对象包含所有属性,即使我删除了其中一些属性。
我现在非常不知道是什么原因造成的。我从 5.6 开始就有这个问题了,无法找到原因。
有人知道吗?
【问题讨论】:
-
您可能通过 Web 路由而不是 api 路由使用它。据我了解,laravel 资源仅适用于 api 路由。
标签: laravel