Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

getContent() returns Array instead of Collection or Model when eager loading relations #2876

Open
JeremieSchelb opened this issue Aug 15, 2024 · 1 comment
Assignees

Comments

@JeremieSchelb
Copy link

Describe the bug
When a relation is eager-loaded, the getContent() method from the Orchid\Screen\AsSource trait returns an array instead of a collection or model.

To Reproduce
Steps to reproduce the behavior:

  1. Eager load a relation (in either the Resource class or the Model class).
  2. In Tinker, call YourModel::first()->getContent('relationName').

Expected behavior
The getContent() method should return a Collection or Model for consistency, especially when using it in a cell component with usingComponent().

Is there a specific reason for prioritizing an array return?

public function getContent(string $field)
{
    return Arr::get($this->toArray(), $field) // Try to get the field value from the object's array representation.
        ?? Arr::get($this->getRelations(), $field) // Try to get the field value from the object's relations.
        ?? $this->getAttribute($field);  // Try to get the field value from the object's attributes.
}

Server (please complete the following information):

  • Platform Version: 14.25.3
  • Laravel Version: 11.2.0
  • PHP Version: 8.3.10
  • Database: MariaDB
  • Database Version: 10.4
@tabuna
Copy link
Member

tabuna commented Aug 29, 2024

I believe this is related to the dot notation, but I'm open to suggestions if you'd like to improve this behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

2 participants