无法从数据库中检索单个列。 Laravel

时间:2016-05-31 06:22:23

标签: php laravel laravel-5 eloquent laravel-5.2

我试图从我的桌面成绩中检索单个列。 为此我在控制器中使用了以下代码:

public function verify($id,$sid)
{

$grade=Grade::all('annual')->whereLoose('id',$id);
return $grade;

}

其中,年度是列名。但是它返回了数组[]的空集。

2 个答案:

答案 0 :(得分:0)

all()获取要从数据库加载的列的列表。在您的情况下,您只获取一个名为年度的列,因此稍后过滤 id 不会返回结果。用以下内容替换您的代码,它应该工作:

$grade = Grade::all('id', 'annual')->whereLoose('id', $id);

请记住,它将返回一组对象,而不是单个对象。

注意:您始终从数据库中加载所有成绩对象,这些对象效率不高且不必要。您可以使用以下代码简单地获取具有给定id的对象:

$grade = Grade::find($id); // fetch all columns
$grade = Grade::find($id, ['id', 'annual']); // fetch only selected columns

答案 1 :(得分:0)

您正在使用的代码是从grades表加载所有行并在代码中过滤它们。最好让您的查询执行过滤器工作。

对于列部分,您可以将所需的列添加到查询的first()函数中,如下所示:

public function verify($id,$sid)
{
    $grade = Grade::where('id', $id)->first(['annual']);
    return $grade->annual;
}