2016-05-31 4 views
0

私はテーブルグレードから単一の列を取得しようとしています。私は私のコントローラで次のコードを使用していることについては :年間は、列名で、データベースから単一の列を取得できません。 Laravel

public function verify($id,$sid) 
{ 

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

} 

。しかし、配列[]の空のセットを戻しています。

答えて

0

all()は、データベースからロードする列のリストをとります。あなたのケースでは、という名前の1つのカラムしか取得していないので、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 
+0

グレート:

列の一部について、あなたはそうのように、クエリのfirst()機能に必要な列を追加することができます!それは完璧に動作し、ノートのおかげで!私はそれを続けます! – Anon

0

を使用しているコードはgradesテーブルからすべての行を読み込み、コードでそれらをフィルタリングしています。クエリにフィルタ作業をさせる方がよいでしょう。

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

ありがとうございました! – Anon

関連する問題