如果我执行以下查询:
$lookupConnection = DB::connection(PZ_CONNECTION)->table($this->createLookupTable);
$lookupConnection->addSelect($lookupField);
$lookupConnection->where($searchField['data_lookup'], '=', $searchArray[$searchField['js_name']]);
$goodData = $lookupConnection->get();
dd($goodData);
这将起作用,并显示包含对象的数组。
Array(1) {
[0] =>
object(stdClass)#225 (2) {
["foo"] => string(3) "bar"
}
}
我的问题是这样,如何在不知道元素是什么的情况下访问对象的元素?
我的意思是,该字段存储在$ lookupField中,但是,我无法运行:
echo $goodData[0]->$lookupField
如果我尝试
echo $goodData[0][$lookupField]
我也遇到了错误。
但如果我尝试
echo $goodData[0]->foo
然后它有效。但这没什么好处,因为直到运行时我才知道$ lookupField的内容是什么。我需要将查询作为数组输出,或者通过变量访问对象数据,但我不知道如何。
答案 0 :(得分:1)
在我的Laravel项目中工作正常:
$ php artisan tinker
[1] > $field = 'title';
// 'title'
[2] > $p = Promotion::all();
// object(Illuminate\Database\Eloquent\Collection)(
//
// )
[3] > $p[0]->$field;
// 'Test Promotion'
或使用查询构建器:
$ php artisan tinker
[1] > $field = 'title';
// 'title'
[2] > $q = DB::table('promotions');
// object(Illuminate\Database\Query\Builder)(
// ...
// )
[3] > $q->addSelect('title');
// object(Illuminate\Database\Query\Builder)(
// ...
// )
[4] > $p = $q->get();
// array(
// 0 => object(stdClass)(
// 'title' => 'Test Promotion'
// )
// )
[5] > $p[0]->$field;
// 'Test Promotion'
答案 1 :(得分:0)
啊,问题是我实际上并没有使用
$lookupField
我正在使用
$anObject->$lookupfield[$n]
所以实际的行是
$goodData[0]->$anObject->lookupField[$n]
如果我改为添加
$lField = $anObject->lookupField[$n]
echo $goodData[0]->$lField
然后那就行了。