Laravel 如何遍历具有多条记录的雄辩对象?

Laravel 如何遍历具有多条记录的雄辩对象?,laravel,laravel-5.3,Laravel,Laravel 5.3,我正在使用以下代码从表中获取记录: 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(

我正在使用以下代码从表中获取记录:

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;

    }

但这是一个有说服力的对象,所以它给了我一个错误。还有什么办法呢?

您试图使用未定义的
$user
变量。您应该迭代集合以获得单个用户:

foreach ($users as $user) {
    echo $user->name;
}
$user = App\tempLogin::where('mobile','=',$mobile)->first();
$name = $user->name;

通常,您会像这样循环收集项目:

$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;
   }
}
foreach($users as $user)
{
    // now the $user contains an array containing each row data.
    $name = $user["name"];
}
但是,如果要以数组形式访问用户集合,请按如下方式更改查询:

$users = App\tempLogin::where('mobile','=',$mobile)->toArray();
然后您可以像这样访问它:

$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;
   }
}
foreach($users as $user)
{
    // now the $user contains an array containing each row data.
    $name = $user["name"];
}
如果要访问单个用户:

foreach ($users as $user) {
    echo $user->name;
}
$user = App\tempLogin::where('mobile','=',$mobile)->first();
$name = $user->name;
这将获取第一行(偏移量0,限制1)。您需要指定获得所需第一行的顺序。

您有一个输入错误

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

return $user->name;
return $user->name;
所以把它改成

return $users->name;
return $users->name;
但我仍然怀疑它是否能解决您的问题,因为您正在使用
get
返回
集合
,除非您在
模板中有关系

因此,我假设您在DB中有一条记录,它的mobile值等于 something&如果是这样的话,您希望返回它的名称 然后你可以使用这个解决方案

然后返回

return $users->name;
return $users->name;
如果数据库中有多条记录&您想执行一个
获取
,那么
你可以这样做

这将仅从表中选择名称

现在你可以回来了

return $users;
return $users;
这将是一个
tempLogin
模型的集合&如果您在视图中使用它作为api,它将使用如下laravel请求自动进行JSON编码

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$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
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;
[
 "YOUR_NAME_OF_THE_RECORD",
 "YOUR_NAME_OF_THE_RECORD",
]
或者,如果要将记录作为数组返回,可以这样使用

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$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
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;
[
 "YOUR_NAME_OF_THE_RECORD",
 "YOUR_NAME_OF_THE_RECORD",
]
这将返回如下数组

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$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
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;
[
 "YOUR_NAME_OF_THE_RECORD",
 "YOUR_NAME_OF_THE_RECORD",
]
&返回

return $user->name;
return $user->name;
所以把它改成

return $users->name;
return $users->name;
但我仍然怀疑它是否能解决您的问题,因为您正在使用
get
返回
集合
,除非您在
模板中有关系

因此,我假设您在DB中有一条记录,它的mobile值等于 something&如果是这样的话,您希望返回它的名称 然后你可以使用这个解决方案

然后返回

return $users->name;
return $users->name;
如果数据库中有多条记录&您想执行一个
获取
,那么
你可以这样做

这将仅从表中选择名称

现在你可以回来了

return $users;
return $users;
这将是一个
tempLogin
模型的集合&如果您在视图中使用它作为api,它将使用如下laravel请求自动进行JSON编码

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$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
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;
[
 "YOUR_NAME_OF_THE_RECORD",
 "YOUR_NAME_OF_THE_RECORD",
]
或者,如果要将记录作为数组返回,可以这样使用

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$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
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;
[
 "YOUR_NAME_OF_THE_RECORD",
 "YOUR_NAME_OF_THE_RECORD",
]
这将返回如下数组

[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$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
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;
[
 "YOUR_NAME_OF_THE_RECORD",
 "YOUR_NAME_OF_THE_RECORD",
]

错误消息是什么?我只是返回Var_dump($users),所以我得到了类似object的输出。你说“它给我带来了一个错误”?
$user
没有定义,但
$users
isI将其更改为:$mobile=$request->mobile$users=tempLogin::where('mobile','=',$mobile)->toArray();返回$users;但是我在db中有重复的手机号,所以它会获取多条记录,这就是为什么我想循环$users。这不起作用,因为->get()将返回一个集合。不是模特儿。您需要迭代或使用索引访问来获取模型属性。但在文档中,我们可以循环访问集合。@ARIF…我更改了如下内容:$users=tempLogin::where('mobile','=',$mobile)->get();我现在可以访问名称吗?不,您不能,因为它是一个
集合
&您想访问集合中的模型属性,只有当它是一个模型实例时,您才能访问名称