0
respostas

[Projeto] Ajuda - Laravel Resource Api Relacionamento Models

Boa tarde!

Gostaria de uma ajuda referente a um projeto efetuado a apartir das aulas de Laravel, em relação ao cenário abaixo:

Eu tenho 3 tabelas, 1 é a Moviment que é a principal, a 2 é a cart_moviments que é a secundária que quando eu coloco os dados da movimentação, ele salva alguns dados em cart_moviments e eu tenho a tabela 3 chamada veículos, que a qual tenho todas as informações dos veículos, todas as tabelas têm um ForeignId, para relacioná-los.

Então, no meu retorno do recurso, tenho Moviment->cartMoviment e quero acessar vehicles dentro do cartMoviment->vehicle->board, , portanto não consigo fazer isso, pois sempre informa que o model vehicle não é de uma collection, mesmo estando.

Meu Store está assim:

 public function store(StoreMovimentRequest $request, StoreCartMovimentRequest $requestCart, StoreDocumentRequest $requestDocument)
    {

        $this->authorize('create', Moviment::class);
        $moviment = Moviment::create($request->validated());
        $moviment->cartMoviment()->create($requestCart->validated());

        foreach(array($request['key_number']) as $notasFiscais) {
            foreach($notasFiscais as $notas) {
                $moviment->document()->create($notas);
            }
        }
        return new MovimentResource($moviment);
    }

Meu Index:

public function index(Moviment $moviment)
    {
        $this->authorize('view', $moviment);
        return MovimentResource::collection(Moviment::with(['cartMoviment', 'vehicle', 'company','person', 'document'])->orderBy('created_at','desc')->get());
    }

Meu Moviment Model:

protected $fillable = [
        'document_type_id', 'people_id', 'company_id', 'vehicle_id', 'department_id'
    ];

    public function Vehicle() {
        return $this->belongsTo(Vehicle::class);
    }

    public function cartMoviment() {
        return $this->hasMany(cartMoviment::class);
    }

Meu Model CartMoviment:

    protected $fillable = ['type', 'vehicle_cart_id'];

    // protected $table = 'cart_moviments';

    public function Moviment() {
        return $this->belongsToMany(Moviment::class);
    }

    public function Vehicle() {
        return $this->belongsTo(Vehicle::class, 'vehicle_cart_id');
    }

Meu Resource Code Api:

            'vehicle_manufacturer'          => $this->vehicle->vehicleModel->name,
            'vehicle_type'                  => $this->vehicle->vehicleType->type,
            'vehicle_cart_id'               => $this->cartMoviment->vehicle, //Aqui aonde quero acessar o vehicle
            'documents'                     => $this->document,
            'user_id'                       => $this->user_id,

Meu retorno Json Api Resource:

//Aqui gostaria de acessar o vehicle_cart_id para acessar o vehicle_id para obter as informações do veiculo referente a ele.

"vehicle_manufacturer": "ONIX",
      "vehicle_type": "CAVALO",
      "vehicle_cart_id": [
        {
          "id": 2,
          "moviment_id": "2",
          "type": "Entrada",
          "vehicle_cart_id": "3",
          "status": "Ativo",

Erro encontrado, pois não têm na collection:

Property [vehicle_cart_id] does not exist on this collection instance.

Ou

Property [vehicle] does not exist on this collection instance.

Agradeço a ajuda.