我使用Eloquent来获取我的产品在数据库中的价格。这是我的代码:
$this->record = DB::select('select * from get_price(?);', array($product_name));
$this->price = $this->record[0]->price;
我肯定会通过此查询获得一个价格。但是当我执行我的代码时,我收到以下错误:
Undefined offset: 0 in line 2
PHP找不到$ this->记录[0] 。所以,我决定使用以下代码:
$this->record = DB::select('select * from get_price(?);', array($product_name));
var_dump(isset($this->record[0]));
foreach ($this->record as $key => $value) {
var_dump($key);
var_dump($value);
var_dump($value->price);exit();
}
$this->price = $this->record[0]->price;
我得到了:
// var_dump(isset($this->record[0]));
bool(true)
// var_dump($key);
int(0)
// var_dump($value);
class stdClass#2059 (2) {
public $price =>
string(2) "1"
public $currency =>
string(3) "USD"
}
// var_dump($value->price);exit();
string(2) "1"
我不知道为什么我无法访问 $ this->记录[0] 但是在 $ this->记录数组的前面我可以访问 0 索引。
我正在使用Laravel 4.2。
答案 0 :(得分:2)
$this->record
不是数组,而是集合。
因此,您无法使用$this->record[0]
获取项目。
要获取数组,您可以调用all()
的方法Illuminate\Database\Eloquent\Collection
。
这将有效:
$r = $this->record->all();
dd($r[0]);
答案 1 :(得分:-1)
你可以这样做
$this->record = DB::select('select * from get_price(?);', array($product_name));
$this->price = collect($this->record)->first()->price;
只有在查询获取任何记录时才会有效。