0

两个表之间的关系正常工作,但是当我使用Hashids它时它不会,它返回 null。

我的代码:

汽车模型:

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,但是当我对它们的 id 进行哈希处理时,它不会返回任何值!

4

1 回答 1

0

这是正确的。由于您id使用Accessors对属性进行哈希处理,因此对属性的任何调用,例如

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

显然,由于 Eloquent 关系取决于实际的 id 值而不是散列值,因此关系会中断。这就是为什么为您的主键/外键设置访问器是个坏主意。

于 2018-12-30T10:48:47.340 回答