我有以下代码:
模型
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开始就有这个,但我找不到原因。
有人有任何想法吗?
答案 0 :(得分:0)
来不及回复,但这实际上通过 withoutWrapping();
解决了地雷问题只需使用以下内容:
- use Illuminate\Http\Resources\Json\JsonResource;
- JsonResource::withoutWrapping();
代替
- use Illuminate\Http\Resources\Json\Resource;
- Resource::withoutWrapping();