2017-03-16 31 views
2

我在Laravel遇到問題。我已經通過我的整個表,我認爲像這樣從我的控制器:表中的輸出值

$usersTable = DB::table('users')->get(); 
return view('users')->with('users', $usersTable); 

在foreach循環中我可以完全得到每個這樣的價值觀在我看來:

​​

但我也需要在我的foreach循環之外訪問這些值,我該怎麼做?

echo Form::text('email', "$users->$value->email", array('placeholder' => "Email")); 

是不工作...

這給我的整個對象以這種形式

[{"id":"1","name":"Administrator","email":"[email protected]","password":"$2y$10$Re3Ahf.SwU5vj4UvtU5Dy.jxaZMsUNC2WhuJMwsNy9gu6TST4PuRG","remember_token":null}] 

如何獲得唯一的電子郵件?我也嘗試使用索引,但那些不起作用。 謝謝!

編輯: 完整情況: 我所擁有的用戶與他們的額外信息(電子郵件,電話,...)的列表。在這些用戶框中有一個按鈕,當我點擊某個模式打開當前的郵件和電話時,會顯示'編輯用戶'。所以我不能在我的控制者中說世衛組織的女主人回來,因爲我只知道用戶點擊客戶端按鈕。 圖片:http://imgur.com/a/krDrY (編輯按鈕是那個有三個圓點的小圓圈)。

+0

是否有某個特定用戶記錄的電子郵件要使用?如果是的話,我會在你的控制器中抓取那個特定的一個,把它在一個單獨的變量中傳遞給你的視圖,並以這種方式使用它。 –

+0

@JeffLambert問題是,我只知道用戶需要從哪裏獲取郵件,此時用戶觸發了一個按鈕。 –

+0

如果您需要通過客戶端操作查找電子郵件,如果您將該邏輯放在客戶端而不是單純地在服務器上執行,可能會更好。您可以將數據屬性添加到點擊按鈕時可查找的內容,並找出電子郵件的方式。 –

回答

1

要訪問一個集合,而無需使用循環,你應該使用的收集方法:

$users = User::get(); 
$users->where('name', 'John Smith')->first()->email 

這將由於您已經預先加載數據,因此不會創建任何其他查詢。

如果要加載只有一個用戶,使用first()代替get()

$users = User::first(); 

如果您將使用get()然後[0]first()像一些人建議在這裏,你會加載所有用戶數據進入每個請求的內存,這將使您的服務器過載。

此外,使用索引訪問數據(如$users[4]['email'])是一種不好的做法。如果可能的話避免它。

+0

我編輯了我的文章。由於我上面解釋的原因,我已將整個表格導入到我的視圖中。 –

0

您需要通過添加[0]

echo Form::text('email', $users[0]->email, array('placeholder' => "Email")); 

爲第一要添加的元素,我建議使用->first()代替->get()獲得單個對象。並刪除循環,並使用任何你想要的。

-2

看起來它是以JSON形式出現的。嘗試json_decode($data)$data->email以獲取該屬性。

+0

也認爲,試了一下,並沒有奏效。 ;) –

0

您正在使用的users集合來獲取第一用戶的電子郵件,你做

$users->first()->email;