2016-06-30 3 views
0

私は何かを本当に簡単にしようとしていますが、うまくいきません。私は1つのコントローラから1つのデータベースを選択し、ユーザーのためにいくつかの情報を表示します。今、私はいくつかの他の情報を表示するために、第2のテーブルから選択するには、この同じコントローラにしようとしているが、私はこれは私がここにある追加した何 コントローラでlaravelでデータベースから選択

public function orderView($orderId, $userId) { 

    $order = self::$user->orders()->where('order_id', $orderId)->first(); 
    $keys = Keys::all(); 

    if (!$order) { 
     App::abort(404); 
    } 

    $userID   = $order['user_id']; 
    $orderID  = $order['order_id']; 
    $public_key  = $keys['public_key']; 
    $private_key = $keys['private_key'];     

    $options = array(
      "public_key" => $public_key, 
      "private_key" => $private_key,    
      "orderID"  => $orderID,  
      "userID"  => $userID  
    ); 

問題があるコントローラの一部である Undefined variable...

を得る

$keys = Keys::all(); 
$public_key  = $keys['public_key']; 
$private_key = $keys['private_key']; 
.... 
"public_key" => $public_key, 
"private_key" => $private_key, 

エラーがIlluminate\Database\Eloquent\Collectionを返しKeys::all()Undefined index: public_key

+0

あなたの鍵::すべてが雄弁オブジェクトの配列を返すため。あなたの場合は$ keys [0] ['public_key']となります。それが最初の結果だと仮定します。代わりに、別のクエリを使用して、必要なキーだけを返す必要があります。 – SArnab

答えて

2

あります。

コレクションの1つのアイテムにアクセスするには、コレクションを反復して個別にアクセスするか、コレクションの機能(具体的にはfirst()など)を使用する必要があります。例えば

public function orderView($orderId, $userId) 
{ 
    $order = self::$user->orders()->where('order_id', $orderId)->first(); 
    $keys = Keys::all(); 

    if (! $order) { 
     App::abort(404); 
    } 

    $options = []; 

    foreach ($keys as $key) 
    { 
     $options[] = [ 
      'public_key' => $key->public_key, 
      'private_key' => $key->private_key, 
      'userID'  => $order->user_id, 
      'orderID'  => $order->order_id 
     ]; 
    } 

    return $options; 
} 

You can find more information about Illuminate Collection methods here.

+0

ありがとう、答えに感謝します。このような作業と 'return $ options'は正しい情報を返しますが、新しいクラス' $ box = new Box($ options); 'の後にこのオプションを使用しますが、' PUBLIC KEY - 空ではありません ' – Garg

+0

私は 'Box'クラスのコードを見る必要があります。そうでなければ、あなたにそれを手助けするのは難しいでしょう。 – GiamPy

+0

非常に巨大な1000 +ラインです。問題は 'Box'クラスも' public key'値を返しますが、私はそれを必要としませんが、それを除外することはできません。このクラスからではなく、データベースから公開キーを表示したいと思います。とにかく – Garg

関連する問題