Скрыть столбец внешнего идентификатора в связи Eloquent - PullRequest
0 голосов
/ 07 февраля 2019

Давайте рассмотрим головоломку Эйнштейна и эти две модели:

class Pet extends Eloquent
{
    public function pet()
    {
        return hasOne(Man::class)
    }
}

class Man extends Eloquent
{
    public function pet()
    {
        return belongsTo(Pet::class)
    }
}

Если я хочу получить всех домашних животных:

Pet::all()->toArray();

Я получу, например:

{
    id: 2,
    man: {
        nationality: "German",
        pet_id: 2
    }
    name: "Fish"
}

Наличие столбца pet_id не имеет значения в этом случае, и я хотел бы скрыть это.Как?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019
class Pet extends Eloquent
{
    public function pet()
    {
        return hasOne(Man::class)->select('nationality');
    }
}
0 голосов
/ 07 февраля 2019

Используйте Eloquent API Resources , чтобы получить версию ваших моделей в виде массива.В конечном итоге это более гибко, чем полагаться на метод toArray модели, который не будет настраиваться.

Если вы все еще хотите использовать toArray, вы можете просто добавить атрибуты, которые не должны быть включеныв защищенную переменную-член, называемую $hidden в каждой соответствующей модели (см. документацию о сериализации моделей Eloquent ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...