Comments (5)
Thanks!
from laravel-gdpr.
Hi there,
Number one will not work. Number two does work, but you forgot to implement the PortableContract
on the relation.
from laravel-gdpr.
Thank you for your reply. However I still have some problems.
I tried also what you told, but I thought it was uncorrect, since I got an exception.
I have the following (simplifying):
class User extends Authenticable implements PortableContract
{
use Portable;
protected $gdprWith = ['relation'];
protected $gdprHidden = ['password', 'remember_token', 'created_at', 'updated_at'];
public function relation()
{
return $this->hasOne(Relation::class);
}
public function getNameAttribute()
{
return ucfirst(strtolower($this->person->name)); // <-- HERE LIES THE PROBLEM
}
...
}
and
class Relation extends Model implements PortableContract
{
use Portable;
protected $gdprHidden = ['id'];
...
}
with this setup I get the following exception:
Property [name] does not exist on this collection instance.
where name
is an (existing) attribute of Relation
used by an accessor in User
It seems that, notwithstanding it is a hasOne
relation, your package loads it as a Collection
instead of a single object, so the accessor fails.
If a remove Relation
from $gdprWith
the relation is correctly loaded but no filtering is performed on the attributes. Any ideas why relations are always load as a Collection
?
from laravel-gdpr.
It seems like the Portable
trait lacks hasOne
and belongsTo
support. Unfortunately, I don't have time to fix this properly this week.
Feel free to use the following workaround for the time being. I'll get back to you with a new release.
/**
* Load and transform a portable relation.
*
* @param string $relation
* @return void
*/
private function loadPortableRelation(string $relation)
{
$items = $this
->$relation()
->get()
->transform(function ($item) {
return $item->portable();
});
if ($items->count() === 1) {
$items = $items->first();
}
$this->attributes[$relation] = $items;
}
from laravel-gdpr.
Ok, thank you for your time
from laravel-gdpr.
Related Issues (20)
- How to use encrypted values in where conditions? HOT 5
- Decryption not working with toArray() HOT 1
- Laravel 6 support HOT 2
- Remove backwards compatibility in next release
- How do I authenticate with db encrypted like email? HOT 1
- Update to Laravel 8 HOT 2
- Is it possible to Login using Encrypted email. HOT 1
- Laravel 8 incompatibility issue HOT 1
- Authentication Mistake HOT 1
- Regarding GDPR HOT 1
- usage doubt
- when use Lazy Eager Loading Relationships, gdprHidden not works HOT 1
- Data download usage with Inertia HOT 7
- API data decryption HOT 1
- Laravel 9 support HOT 3
- show only some relationship attributes HOT 3
- Changing the downloaded file name ? HOT 1
- Laravel 10 support HOT 1
- Laravel 11.x Compatibility HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from laravel-gdpr.