我试图使用Eloquent获取单个列的值:
MyModel::where('field', 'foo')->get(['id']); // returns [{"id":1}]
MyModel::where('field', 'foo')->select('id')->first() // returns {"id":1}
然而,我得到的不是值为
1
。如何获得那个1
?注意:表中可能不存在
field
为foo
的记录!
编辑
我理想情况下正在寻找一个单一语句,它可以返回值(例如1
)或失败并返回''
或null
或其他。为了给你更多的上下文信息,这实际上是在Validator :: make
中的一个规则中使用的:
'input' => 'exists:table,some_field,id,' . my_query_above...
编辑2
根据Adiasz的回答,我发现MyModel::where('field', 'foo')->value('id')
正好满足我的需求:返回一个整数值或空字符串(失败时)。
first()
返回null
时,它会失败:Call to a member function value() on null
;( - AlexMyModel::where('field', 'foo')->value('id')
给了我所需的结果(int或者是''
如果失败了)... 谢谢! - Alex