我正在尝试从与我的Where子句相匹配的第一个记录中返回单列值。在我的控制器的下面示例中,我将此结果定义为$代码。我可以获取第一个记录,也可以获得特定的列值,但不能同时获得。
第一唱片: $ code = db :: table('codes') ->其中('赎回','0') -> first();
单列值: $ code = db :: table('codes') ->其中('赎回','0') -> value('code');
我如何在一个请求中执行两者?
您要寻找的是pluck
。
DB::table('codes')->where('redeemed', 0)->pluck('code');
您可以使用select()
方法:
DB::table('codes')->where('redeemed', '0')->select('code')->first();
您的第二个示例:
$code = DB::table('codes')->where('redeemed', '0')->value('code');
这已经可以做您想要的。value()
方法调用first()
,如该方法的定义:
public function value($column)
{
$result = (array) $this->first([$column]); // <-- call to first on query
return count($result) > 0 ? reset($result) : null;
}