-
Type:
Question
-
Resolution: Unresolved
-
Priority:
Unknown
-
None
-
Affects Version/s: None
-
Component/s: Laravel
-
None
-
None
-
None
-
None
-
None
-
None
-
None
florianJacques has created Issue #2788: [BUG] hasMany and hasOne relation not working with ObjectId in laravel-mongodb. This Jira ticket was filed by GromNaN
Issue Text:
Hello
The _id autocast is a problem on HasOne and HasMany relations, as it prevents comparisons with ObjectId
public function getIdAttribute($value = null) { // If we don't have a value for 'id', we will use the MongoDB '_id' value. // This allows us to work with models in a more sql-like way. if (! $value && array_key_exists('_id', $this->attributes)) { $value = $this->attributes['_id']; } // Convert ObjectID to string. if ($value instanceof ObjectID) { return (string) $value; } if ($value instanceof Binary) { return (string) $value->getData(); } return $value; }
Indeed, this relationship always returns me null
public function accessToken(): HasOne { return $this->hasOne(AccessToken::class, 'userId', '_id'); }
But if I remove the line
// Convert ObjectID to string. if ($value instanceof ObjectID) { return (string) $value; }
The relation working