Laravel, родственные модели обновленных имен - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть модель, у которой есть связанная модель

class A extends Model{

public function niceName()
    {
        return this->hasOne('App\NiceName2' ...);
    }

В контроллере, когда я получаю данные с помощью подмодели, результат выглядит как

a [nice_name_2] (используя имя таблицы), и я хотел бы, чтобы он был [NiceName2].

Есть ли способ получить псевдоним для возвращаемого результата? Я знаю, что в cakePHP есть свойство name для установки отношений. У Laravel есть похожая особенность?

Спасибо

1 Ответ

0 голосов
/ 15 ноября 2018

Laravel использует соглашение camelCase для имен методов и snake_case для атрибутов. Я не уверен, что есть простой способ обойти это.

Когда Laravel сериализует данные, он преобразует отношения в snake_case, по соглашению. Таким образом, NiceName2 станет nice_name2 при выполнении toArray() или при сериализации модели (либо в ответе JSON, либо иным образом).

Как это работает:

Когда вы обращаетесь к $model->nice_name2, он преобразует имя свойства обратно в niceName2, чтобы проверить метод связи с этим именем. При сериализации преобразует отношение niceName2 в имя атрибута nice_name2.

...