我正在尝试使用 Eloquent获取单个列的值:
MyModel::where('field', 'foo')->get(['id']); // returns [{"id":1}]
MyModel::where('field', 'foo')->select('id')->first() // returns {"id":1}
Run Code Online (Sandbox Code Playgroud)
但是,我得到的只是 value 1。怎么能得到1呢?
注意:表中可能不存在带有fieldof的记录foo!
我最好找一个单独的语句,要么返回值(例如1),或失败,一个''或null或其他。为了给您更多的上下文,这实际上用于Validator::make以下规则之一:
'input' => 'exists:table,some_field,id,' . my_query_above...
Run Code Online (Sandbox Code Playgroud)
使用 Adiasz 的回答,我发现这MyModel::where('field', 'foo')->value('id')正是我需要的:返回一个整数值或一个空字符串(失败时)。
Laravel 是直观的框架...如果你想要值只需调用 value() 方法。
MyModel::find(PK)->value('id');
MyModel::where('field', 'foo')->first()->value('id');
Run Code Online (Sandbox Code Playgroud)
您正在使用 Eloquent 查询构建器,因此默认情况下,它会返回一个仅包含您希望的值的 Eloquent 模型。
您正在寻找的方法pluck()存在于普通查询构建器中(Eloquent 扩展了该构建器),因此您的代码应如下所示:
MyModel::where('field', 'foo')->pluck('id'); // returns [1]
Run Code Online (Sandbox Code Playgroud)
的value()是在其他的答案被使用的方法是一个口才模型方法。使用这意味着框架查询数据库,对模型进行水合,然后仅返回该值。您可以通过使用pluck()并在一个查询中简单地处理它来节省几次击键和几个 CPU 周期。
| 归档时间: |
|
| 查看次数: |
6911 次 |
| 最近记录: |