2016-10-10 63 views
1

我使用下面的代碼從表中提取記錄:如何遍歷具有多個記錄的雄辯對象?

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Illuminate\Database\Eloquent\Collection; 
use App\Http\Requests; 
//use App\tempLogin; 

class loginController extends Controller 
{ 
    public function checkCredentials(Request $request){ 

     $mobile = $request->mobile; 

     $users = App\tempLogin::where('mobile','=',$mobile)->get(); 


     return $user->name; 

    } 

但這是雄辯的對象,因此它扔我一個錯誤。還有什麼方法可以做到這一點?

+0

錯誤信息是什麼? –

+0

我只是返回Var_dump($ users),所以我得到了像對象一樣的輸出。 – sam

+0

你說「它給我一個錯誤」? –

回答

1

你有一個錯字

$users = \App\tempLogin::where('mobile','=',$mobile)->get();//you are getting $users 

&返回

return $user->name; 

所以將其更改爲

return $users->name; 

但是當你使用的是我還有一個疑問,這將解決你的問題get &得到回報a collection除非你有一個關係tempLogin模型。

所以我假設你已經在數據庫記錄具有mobile等於 &要返回的這個名字,如果是這樣的話 那麼你可以使用此解決方案

東西
$users = \App\tempLogin::where('mobile','=',$mobile)->firstOrFail();//source https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Builder.php#L299-L306 

然後返回

return $users->name; 

如果您在DB多個記錄&你想要做一個get然後 你可以像這樣

$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->get(); 

這樣只會選取name從表

現在你可以返回

return $users; 

這將是tempLogin型號&集合,如果你用它在視圖API將自動JSON使用這樣

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}] 

laravel請求編碼或者,如果您想返回該記錄作爲數組,你可以使用這樣

$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all(); 
return $users; 

這將返回類似這樣的

[ 
"YOUR_NAME_OF_THE_RECORD", 
"YOUR_NAME_OF_THE_RECORD", 
]You have a typo 

$users = \App\tempLogin::where('mobile','=',$mobile)->get();//you are getting $users 
數組210

&返回

return $user->name; 

所以將其更改爲

return $users->name; 

但我仍然有一個疑問,這將解決你的問題,因爲你正在使用get & GET返回collection,除非你有關係tempLogin模型。

所以我假設你已經在數據庫記錄具有mobile等於 &要返回的這個名字,如果是這樣的話 那麼你可以使用此解決方案

東西
$users = \App\tempLogin::where('mobile','=',$mobile)->firstOrFail();//source https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Builder.php#L299-L306 

然後返回

return $users->name; 

如果您在DB多個記錄&你想要做一個get然後 你可以像這樣

$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->get(); 

這樣只會選取name從表

現在你可以返回

return $users; 

這將是tempLogin型號&集合,如果你用它在視圖API將自動JSON使用這樣

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}] 

laravel請求編碼或者,如果您想返回該記錄作爲數組,你可以使用這樣

$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all(); 
return $users; 

這將返回類似這樣的

[ 
"YOUR_NAME_OF_THE_RECORD", 
"YOUR_NAME_OF_THE_RECORD", 
] 
數組
+0

但我有重複的手機號碼。在分貝,所以它會獲取多個記錄,這就是爲什麼我想通過$用戶循環。 – sam

+0

這將不起作用,因爲 - > get()將返回一個集合。不是模型。您需要迭代或使用索引訪問來獲取模型屬性。 –

+0

但在文檔中,我們可以循環收集。 – sam

0

您正在嘗試使用未定義的變量$user。你應該遍歷集合獲得單個用戶:

foreach ($users as $user) { 
    echo $user->name; 
} 
0

通常你循環回收項目是這樣的:

$users = App\tempLogin::where('mobile','=',$mobile)->get(); 

if($users->count() > 0) 
{ 
    forach($users as $user) 
    { 
     // do something with the App\User model 
     $name = $user->name; 
    } 
} 

,但如果你要訪問的用戶集合作爲數組,改變這樣的查詢:

$users = App\tempLogin::where('mobile','=',$mobile)->toArray(); 

那麼你可以像這樣訪問:

foreach($users as $user) 
{ 
    // now the $user contains an array containing each row data. 
    $name = $user["name"]; 
} 

如果要訪問單個用戶:

$user = App\tempLogin::where('mobile','=',$mobile)->first(); 
$name = $user->name; 

這將取第一(偏移量爲0,上限1)行給你。您需要指定順序以獲得所需的第一行。

+0

我改變它爲:$ mobile = $ request-> mobile; $ users = tempLogin :: where('mobile','=',$ mobile) - > toArray(); \t \t返回$ users; – sam