Соотношение между двумя таблицами работает правильно, но когда я использую 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
имеет значение, но изображения внутри него, нет!
Обратите внимание, что он работает с простыми идентификаторами, но когда я хэширую их идентификаторы, он не возвращает никакого значения!
Правильно. Поскольку вы хэшируете id
атрибуты с помощью Accessors, любой вызов в собственность, такую как
$car->car_id; // would return the hashed id
Очевидно, что поскольку отношение Eloquent зависит от действительного значения идентификатора, а не от хэшированного, отношения будут нарушены. Вот почему плохая идея иметь аксессор для вашего первичного / внешнего ключа.
Других решений пока нет …