在我的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'像这样:
如何让laravel停止改变我的变量与蛇案的关系?
只是为了笑容,我也尝试过:
$vitalLabel = VitalLabel::where('label', 'confirmation')->with(['subscribers','vitalCategories','vitals'])->first();
$vitalLabel->load('vitalCategories');
$vitalLabel->vitalCategories = $vitalLabel->vitalCategories() ;
return json_encode($vitalLabel);
未能看到相关模型:
然后我尝试了:
$vitalLabel = VitalLabel::where('label', 'confirmation')->with(['subscribers','vitalCategories','vitals'])->first();
$vitalLabel->load('vitalCategories');
$vitalLabel->vitalCategories = $vitalLabel->vital_categories;
return json_encode($vitalLabel);
也未能看到相关模型:
答案 0 :(得分:5)
当模型转换为数组(camelCase
)或json(snake_case
)时,Laravel会自动将关系名称从toArray()
转换为toJson()
。
因此,模型上的属性实际上是vitalCategories
,但当您将其作为json转储时,它将打印为vital_categories
。
如果您想关闭它,可以将模型上的$snakeAttributes
属性设置为false。
public static $snakeAttributes = false;