Laravel 5.5 - 数据库查询的解析结果
Laravel 5.5 - Parse result of db query
我正在使用 Laravel Framework 5.5.26
并通过以下调用查询我的数据库:
$symbolsArray = DB::table('exchanges')
->join('markets', 'exchanges.id', '=', 'markets.exchanges_id')
->where('name', $exchangeName)
->get(array(
'symbol',
));
如果我 var_dump($symbolsArray)
我得到以下输出:
class Illuminate\Support\Collection#619 (1) {
protected $items =>
array(99) {
[0] =>
class stdClass#626 (1) {
public $symbol =>
string(7) "BCN/BTC"
}
[1] =>
class stdClass#621 (1) {
public $symbol =>
string(8) "BELA/BTC"
}
[2] =>
class stdClass#623 (1) {
public $symbol =>
string(7) "BLK/BTC"
}
[3] =>
class stdClass#627 (1) {
public $symbol =>
string(8) "BTCD/BTC"
}
...
}
}
我正在尝试获取如下所示的 $symbol
:
$symbolsArray[$key]['symbol']
但是,我收到以下错误:
Cannot use object of type stdClass as array
有什么关于如何从查询输出中访问 symbol
的建议吗?
它是对象的集合,不是数组。因此,您需要使用此语法来获取集合中对象的 属性:
$symbolsArray[$key]->symbol
如果您只需要获取符号,请使用 pluck()
而不是 get()
:
->pluck('symbol')->toArray()
将给定输出简单转换为数组,如下所示
$symbolsArray = DB::table('exchanges')
->join('markets', 'exchanges.id', '=', 'markets.exchanges_id')
->where('name', $exchangeName)
->get(array(
'symbol',
))->toArray(); // get data as array not object
DB::table()->get() 的结果始终是一个 Collection,您可以像访问 PHP class 中的变量一样访问其属性 ->
.
在您的示例中,您的 $symbolsArray
实际上不是数组,您使用 $symbolsArray[$key]->symbol
访问内容。
假设您是 Laravel 的新手,我建议您看一下 Laravel 的内置 ORM Eloquent。它使使用数据库变得简单直接,如果您深入研究 Eloquent 的集合,您会发现它们使处理数据变得轻而易举。
$symbolsArray 是一个集合而不是数组。获取数组,您可以从集合 $symbolsArray = DB::table('exchanges')
->join('markets', 'exchanges.id', '=', 'markets.exchanges_id')
->where('name', $exchangeName)
->pluck('symbol')->all();
中提取符号,或者您实际上可以通过 $new_array = $symbolsArray->toArray()
将集合转换为数组
我正在使用 Laravel Framework 5.5.26
并通过以下调用查询我的数据库:
$symbolsArray = DB::table('exchanges')
->join('markets', 'exchanges.id', '=', 'markets.exchanges_id')
->where('name', $exchangeName)
->get(array(
'symbol',
));
如果我 var_dump($symbolsArray)
我得到以下输出:
class Illuminate\Support\Collection#619 (1) {
protected $items =>
array(99) {
[0] =>
class stdClass#626 (1) {
public $symbol =>
string(7) "BCN/BTC"
}
[1] =>
class stdClass#621 (1) {
public $symbol =>
string(8) "BELA/BTC"
}
[2] =>
class stdClass#623 (1) {
public $symbol =>
string(7) "BLK/BTC"
}
[3] =>
class stdClass#627 (1) {
public $symbol =>
string(8) "BTCD/BTC"
}
...
}
}
我正在尝试获取如下所示的 $symbol
:
$symbolsArray[$key]['symbol']
但是,我收到以下错误:
Cannot use object of type stdClass as array
有什么关于如何从查询输出中访问 symbol
的建议吗?
它是对象的集合,不是数组。因此,您需要使用此语法来获取集合中对象的 属性:
$symbolsArray[$key]->symbol
如果您只需要获取符号,请使用 pluck()
而不是 get()
:
->pluck('symbol')->toArray()
将给定输出简单转换为数组,如下所示
$symbolsArray = DB::table('exchanges')
->join('markets', 'exchanges.id', '=', 'markets.exchanges_id')
->where('name', $exchangeName)
->get(array(
'symbol',
))->toArray(); // get data as array not object
DB::table()->get() 的结果始终是一个 Collection,您可以像访问 PHP class 中的变量一样访问其属性 ->
.
在您的示例中,您的 $symbolsArray
实际上不是数组,您使用 $symbolsArray[$key]->symbol
访问内容。
假设您是 Laravel 的新手,我建议您看一下 Laravel 的内置 ORM Eloquent。它使使用数据库变得简单直接,如果您深入研究 Eloquent 的集合,您会发现它们使处理数据变得轻而易举。
$symbolsArray 是一个集合而不是数组。获取数组,您可以从集合 $symbolsArray = DB::table('exchanges')
->join('markets', 'exchanges.id', '=', 'markets.exchanges_id')
->where('name', $exchangeName)
->pluck('symbol')->all();
中提取符号,或者您实际上可以通过 $new_array = $symbolsArray->toArray()