我在我的根路由中有以下内容:
$user = User::all();
return $user->column-one;
尽管我在用户表中有一个名为column-one
的列,但它返回异常使用未定义常量one-假定'one'。那么我该如何从我的模型中获取column-one
?
我在我的根路由中有以下内容:
$user = User::all();
return $user->column-one;
尽管我在用户表中有一个名为column-one
的列,但它返回异常使用未定义常量one-假定'one'。那么我该如何从我的模型中获取column-one
?
在查看 Eloquent 模型的源代码后,我发现了一个神奇的魔术方法 __get
并且了解到它只是 getAttribute
这个公共函数的一个包装器,该函数接受一个字符串,因此现在我可以通过 $user->getAttribute('column-one');
来检索列。
编辑:
请参见 @Alexandre Butynski 的下面的评论,以获得比我使用的更好的解决方案。
function getColumnOneAttribute()
,这样你就可以像这样访问属性:$use->column_one
。阅读文档:http://laravel.com/docs/eloquent#accessors-and-mutators。 - Alexandre ButynskiU1-U2_max
,并创建了一个访问器函数public function getU1U2MinAttribute($value){ return $value; }
。问题是Laravel不知道如何在U1和U2之间放置破折号。如果它是U1和U2之间的下划线,则可以工作。访问器的目的是在从模型检索时格式化Eloquent属性。这对我有用{{ $post->resultats_electrique->getAttribute('U1-U2_min') }}
。 - Fokwa Best我没有尝试过这个,但是很好奇是否可以使用驼峰命名法来实现。对于路由之类的东西,它就是这样工作的。例如:$user->columnOne
。
但是我建议重新命名该列。在PHP应用程序中,这真的不太适合映射。
更新-尝试这个:
$user->{"column-one"}