Laravel/Lumen:如何从第一个记录匹配的子句中返回单个值



我正在尝试从与我的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;
}

最新更新