Я получал отношения как в laravel 5.3 и работал нормально:
//execute the relation of the given model
$data = $model->{$info["relation"]}();
// get the type of the relation
$class = get_class($data);
$dataType = explode("\\", $class);
$relationType = end($dataType);
$options["columns"][$key]["relationType"] = $relationType;
// if its a simple belongs-to statement
if($relationType == "BelongsTo") {
// get all belongs-to query info
$otherTable = $data->getRelated()->getTable();
$foreignKey = $data->getQualifiedForeignKey();
$otherKey = $data->getOtherKey();
// manually join using it
$retrievedRecords->leftJoin($otherTable . ' as ' . $info["relation"], $info["relation"] . '.' . $otherKey, '=', $foreignKey);
} else if($relationType == "HasMany" || $relationType == "HasOne") {
// get all has-many query info
$otherTable = $data->getRelated()->getTable();
$foreignKey = $data->getPlainForeignKey();
$parentKey = $data->getQualifiedParentKeyName();
// manually join using it
$retrievedRecords->leftJoin($otherTable . ' as ' . $info["relation"], $info["relation"] . '.' . $foreignKey, '=', $parentKey);
}
Теперь я скачал свежий laravel 5.4
и это дает мне ошибку:
Call to undefined method Illuminate\Database\Query\Builder::getOtherKey()
Как getOtherKey()
существует в приведенном выше коде в if()
раздел.
Есть ли альтернатива для этого?
getOtherKey
метод был переименован в getOwnerKey
, Таким образом, вы можете получить ключ владельца, сказав:
$ownerKey = $data->getOwnerKey();
Других решений пока нет …