yiisoft/yii2 · error · yii\base\InvalidCallException
Unable to link models: the link defining the relation does n
Error message
Unable to link models: the link defining the relation does not involve any primary key.
What it means
Error "Unable to link models: the link defining the relation does not involve any primary key." thrown in yiisoft/yii2.
Source
Thrown at framework/db/BaseActiveRecord.php:1369
}
} else {
$p1 = $model->isPrimaryKey(array_keys($relation->link));
$p2 = static::isPrimaryKey(array_values($relation->link));
if ($p1 && $p2) {
if ($this->getIsNewRecord()) {
if ($model->getIsNewRecord()) {
throw new InvalidCallException('Unable to link models: at most one model can be newly created.');
}
$this->bindModels(array_flip($relation->link), $this, $model);
} else {
$this->bindModels($relation->link, $model, $this);
}
} elseif ($p1) {
$this->bindModels(array_flip($relation->link), $this, $model);
} elseif ($p2) {
$this->bindModels($relation->link, $model, $this);
} else {
throw new InvalidCallException('Unable to link models: the link defining the relation does not involve any primary key.');
}
}
// update lazily loaded related objects
if (!$relation->multiple) {
$this->_related[$name] = $model;
} elseif (isset($this->_related[$name])) {
if ($relation->indexBy !== null) {
if ($relation->indexBy instanceof \Closure) {
$index = call_user_func($relation->indexBy, $model);
} else {
$index = $model->{$relation->indexBy};
}
$this->_related[$name][$index] = $model;
} else {
$this->_related[$name][] = $model;
}
}View on GitHub (pinned to 66f00d18a2)
When it happens
Trigger: Thrown at framework/db/BaseActiveRecord.php:1369 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of yiisoft/yii2@66f00d18a2 (2026-08-17).
Data as JSON: /api/errors/9a0fe6028aca8b91.
Report an issue: GitHub.