Как получить отношения между двумя таблицами, когда идентификаторы хэшируются в модели доступа?

Соотношение между двумя таблицами работает правильно, но когда я использую Hashids это не так, и он возвращает ноль.

Мой код:

Модель автомобиля:

public function getCarIdAttribute($value)
{
return Hashids::encode($value);
}

Модель автомобиля изображения:

public function getCarIdAttribute($value)
{
return Hashids::encode($value);
}

Резервная модель автомобиля:

public function getCarIdAttribute($value)
{
return Hashids::encode($value);
}

public function getReserveIdAttribute($value)
{
return Hashids::encode($value);
}

public function images()
{
return $this->hasMany(CarImage::class, 'car_id');
}

Мой контроллер:

$cars = Car::with('images')->get();

$cars имеет значение, но изображения внутри него, нет!

Обратите внимание, что он работает с простыми идентификаторами, но когда я хэширую их идентификаторы, он не возвращает никакого значения!

0

Решение

Правильно. Поскольку вы хэшируете id атрибуты с помощью Accessors, любой вызов в собственность, такую ​​как

$car->car_id; // would return the hashed id

Очевидно, что поскольку отношение Eloquent зависит от действительного значения идентификатора, а не от хэшированного, отношения будут нарушены. Вот почему плохая идея иметь аксессор для вашего первичного / внешнего ключа.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]