Laravel" with"将变量案例更改为蛇案例

时间:2017-06-28 04:43:39

标签: php laravel relationship

在我的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

1 个答案:

答案 0 :(得分:5)

当模型转换为数组(camelCase)或json(snake_case)时,Laravel会自动将关系名称从toArray()转换为toJson()

因此,模型上的属性实际上是vitalCategories,但当您将其作为json转储时,它将打印为vital_categories

如果您想关闭它,可以将模型上的$snakeAttributes属性设置为false。

public static $snakeAttributes = false;