Laravel "с" изменяет регистр переменной на регистр змеи


В моем приложении Laravel у меня есть модель, которая определяет отношения, такие как:

public function vitalCategories()
{
    return $this->belongsToMany(
        'App\Models\Diagonals\VitalLabelCategory',
        'vitalLabelCategoryMap',
        'vitalLabelId',
        'vitalLabelCategoryId');
}

Когда я запрашиваю запись, как показано ниже, я ожидаю, что связь будет доступна с именем переменной vitalCategories

$vitalLabel = VitalLabel::where('label', 'confirmation')->with(['subscribers','vitalCategories','vitals'])->first();
return json_encode($vitalLabel);

Однако приведенный выше запрос создает связь с именем переменной 'vital_categories' следующим образом:

enter image description here

Как я могу заставить laravel прекратить изменять регистр моей переменной для отношения к регистру змеи?

Просто для усмешки, я также пробовал:

$vitalLabel = VitalLabel::where('label', 'confirmation')->with(['subscribers','vitalCategories','vitals'])->first();
$vitalLabel->load('vitalCategories');
$vitalLabel->vitalCategories = $vitalLabel->vitalCategories() ;
return json_encode($vitalLabel);

Который не смог увидеть соответствующие модели:

enter image description here

Итак, я попробовал:

$vitalLabel = VitalLabel::where('label', 'confirmation')->with(['subscribers','vitalCategories','vitals'])->first();
$vitalLabel->load('vitalCategories');
$vitalLabel->vitalCategories = $vitalLabel->vital_categories;
return json_encode($vitalLabel);

Который также не смог увидеть соответствующие модели:

enter image description here

Author: DelightedD0D, 2017-06-28

1 answers

Laravel автоматически преобразует имена отношений из camelCase в snake_case, когда модель преобразуется в массив (toArray()) или json (toJson()).

Итак, атрибут модели на самом деле vitalCategories, но когда вы выгружаете его как json, он будет напечатан как vital_categories.

Если вы хотите отключить эту функцию, вы можете установить для свойства $snakeAttributes вашей модели значение false.

public static $snakeAttributes = false;
 5
Author: patricus, 2017-06-28 05:17:21