2014-09-05 104 views
0

如果我執行以下查詢:如何以數組形式輸出Laravel 4查詢構建器查詢?

$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的內容是什麼。我需要將查詢作爲數組輸出,或通過變量訪問對象數據,但我不知道如何。

$ php artisan tinker 
[1] > $field = 'title'; 
// 'title' 
[2] > $p = Promotion::all(); 
// object(Illuminate\Database\Eloquent\Collection)(
// 
//) 
[3] > $p[0]->$field; 
// 'Test Promotion' 

或者與查詢生成器:

+0

你會收到什麼錯誤? – ceejayoz 2014-09-05 17:08:28

+0

你可以執行json編碼,然後json解碼來獲得普通數組而不是對象數組。然後你可以壓扁數組或循環查找屬性。 – 2014-09-05 17:17:10

+0

嗯,問題是我實際上沒有使用$ lookupField,我使用$ anObject - > $ lookupfield [$ n]。所以實際的行會是$ goodData [0] - > $ anObject-> lookupField [$ n]如果我添加了 $ lField = $ anObject-> lookupField [$ n],那麼我可以做$ goodData [0] - > $ lField – Puzbie 2014-09-05 17:28:39

回答

1

在我的Laravel項目工作正常,但問題是,我並沒有真正使用

$ 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' 
+0

這就是使用雄辯的ORM。我正在使用查詢生成器。 – Puzbie 2014-09-05 17:09:20

+0

@FacebookAnswers ORM使用查詢生成器。看我的編輯。 – ceejayoz 2014-09-05 17:13:43

+0

我已經添加了答案,因爲問題比我最初發布時稍微複雜一些。但是,我已經+1了你的答案,因爲它是有用的。謝謝您的幫助。 – Puzbie 2014-09-05 17:34:08

0

$lookupField 

我正在使用

$anObject->$lookupfield[$n] 

所以實際的行會

$goodData[0]->$anObject->lookupField[$n] 

相反,如果我加入

$lField = $anObject->lookupField[$n] 
echo $goodData[0]->$lField 

然後,將工作。