5.0.12多对多关联新增中间表出现pivot model must extends: \think\model\Pivot报错。
之前用5.0.11版本没有问题。更新到5.0.12就报pivot model must extends: \think\model\Pivot。经过排查发现5.0.12版本think\model\relation\BelongsToMany.php中的newPivot()方法对比5.0.11中代码有改动。
5.0.11
protected function newPivot($data = [])
{
$pivot = $this->pivotName ?: '\\think\\model\\Pivot';
return new $pivot($this->parent, $data, $this->middle);
}
5.0.12
protected function newPivot($data = [])
{
$class = $this->pivotName ?: '\\think\\model\\Pivot';
$pivot = new $class($this->parent, $data, $this->middle);
if ($pivot instanceof Pivot) {
return $pivot;
} else {
throw new Exception('pivot model must extends: \think\model\Pivot');
}
}
然后改成跟5.0.11一样的就可以使用了。
对tp底层实现不太明白,不知道算不算bug,希望有人能够给出比较好的解答。