【问题标题】:Laravel Resource collection no longer working since upgrade to 5.6自升级到 5.6 后,Laravel 资源收集不再有效
【发布时间】: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


【解决方案1】:

回复有点晚,但这实际上解决了我的 withoutWrapping();

问题

只需使用这些:

 - use Illuminate\Http\Resources\Json\JsonResource; 
 - JsonResource::withoutWrapping();

代替

 - use Illuminate\Http\Resources\Json\Resource; 
 - Resource::withoutWrapping();

【讨论】:

    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 2019-02-06
    • 2016-12-03
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多