「items」という名前のテーブルと「ref_code」という名前のwhere条件の入力があります。
$items = DB::table('items')
->where('ref_code','=', $request->ref_code)
->get(['id', 'ref_code', 'name','price']);
しかし、私は各列の値をとることができないようです。
以下を使用して、クエリビルダーが機能するかどうかを確認しました。
return $items;
幸い、問題はありません。
ただし、単一の値を返すか取得することは、次の場合には機能しません。
return $items->id
私の構文は間違っていますか?これらはすべて私のコントローラーの中にあります。
編集:私は試しました
dd($items);
戻る前に、それは私にこれを示しました:
Collection {#325 ▼
#items: array:1 [▼
0 => {#322 ▶}
]
}
結果で質問を更新していただきありがとうございます。デバッグ結果を見てください。それはのように見えます
_array:1 [▼
0 => {#322 ▶}
]
_
つまり、get()
メソッドを使用しているため、クエリは配列のコレクションを返します。したがって、get()
メソッドは常に配列のコレクションを返します。
この問題を回避するには、first()
の代わりにget()
メソッドを使用する必要があります。 Remember:単一の行を取得する場合は、常にfirst()メソッドを使用する必要があります。
したがって、クエリは次のようになります。
_$items = DB::table('items')
->select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
_
または
_$item = YourModelName::select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
_
そして最後にlike$ item-> id、$ item-> ref_codeなどの出力を取得します。
それが役立つことを願っています。
get()
コレクションを返します
_$items = DB::table('items')
->where('ref_code','=', $request->ref_code)
->get(['id', 'ref_code', 'name','price']);
_
上記の場合、_$items
_はコレクションになるため、プロパティにアクセスするにはコレクションをループする必要があります
_foreach ($items as $item) {
$item->price;
}
_
モデルインスタンスを返す必要がある場合は、代わりにメソッド first()
を使用できます。
_$items = DB::table('items')
->select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
_
としてプロパティにアクセスします
_$items->price;
_
モデルを使用してこれを試してください
$result = Model_name::->where('ref_code','=', $request->ref_code)
->first(['id', 'ref_code', 'name', 'price']);