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]