我尝试的东西非常简单但却无法奏效。我有一个控制器,从一个数据库中选择,以显示用户的一些信息。现在我尝试在同一个控制器中从第二个表中选择显示其他信息,但我得到Undefined variable...
这是控制器中存在问题的部分
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
);
我在这里添加的是
$keys = Keys::all();
$public_key = $keys['public_key'];
$private_key = $keys['private_key'];
....
"public_key" => $public_key,
"private_key" => $private_key,
错误为Undefined index: public_key
答案 0 :(得分:2)
Keys::all()
会返回Illuminate\Database\Eloquent\Collection
。
为了访问Collection的单个项目,您必须迭代集合并单独访问它们,或者使用Collection的函数专门使用一个项目,例如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.