Laravel 在Elount中获取给定列的值

Laravel 在Elount中获取给定列的值,laravel,eloquent,Laravel,Eloquent,我正在尝试使用雄辩的方法获得单个列的值: MyModel::where('field', 'foo')->get(['id']); // returns [{"id":1}] MyModel::where('field', 'foo')->select('id')->first() // returns {"id":1} 但是,我得到的不是值1。怎样才能得到1 注意:表中可能不存在foo的字段的记录 编辑 理想情况下,我正在寻找一条语句,该语句要么返回值(例如1),要么以'

我正在尝试使用雄辩的方法获得单个列的

MyModel::where('field', 'foo')->get(['id']); // returns [{"id":1}]

MyModel::where('field', 'foo')->select('id')->first() // returns {"id":1}
但是,我得到的不是值
1
。怎样才能得到
1

注意:表中可能不存在
foo
字段
的记录

编辑 理想情况下,我正在寻找一条语句,该语句要么返回值(例如
1
),要么以
'
null
或其他形式失败。为了给您提供更多的上下文,这实际上在以下规则之一的
Validator::make
中使用:

'input' => 'exists:table,some_field,id,' . my_query_above...
编辑2
使用Adisz的答案,我发现
MyModel::where('field','foo')->value('id')
正是我所需要的:返回一个整数值或一个空字符串(失败时)。

Laravel是一个直观的框架。。。如果需要value,只需调用value()方法


您使用的是雄辩的查询生成器,因此默认情况下,它将返回一个雄辩的模型,其中只包含您希望的值

您正在寻找的方法是
pulk()
,它存在于普通的查询生成器中(雄辩的一个扩展了它),因此您的代码应该如下所示:

MyModel::where('field', 'foo')->pluck('id'); // returns [1]

其他答案中使用的
value()
方法是一种雄辩的模型方法。使用它意味着框架查询数据库,对模型进行水合物化,然后只返回该值。通过使用
pluck()
,您可以节省几次击键和几次CPU周期,并且只需在一次查询中进行处理。

first()
返回
null
调用null上的成员函数value(),则失败;(将其更改为firstOrFail()-这可以防止不存在的模型出错。不幸的是,我正在使用它来构建API…
firstOrFail
将生成HTML标记以便生成类似于Vikash answer中的IF语句…想一想!请查看我的编辑,我为问题添加了一些重要的上下文。如何从给定的API中检索
1
如果($result){return$result[0];}
MyModel::where('field', 'foo')->pluck('id'); // returns [1]