首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代具有多个记录的雄辩对象?

如何迭代具有多个记录的雄辩对象?
EN

Stack Overflow用户
提问于 2016-10-10 07:21:28
回答 3查看 4.6K关注 0票数 1

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

代码语言:javascript
复制
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;

    }

但这是一个雄辩的对象,所以它给我一个错误。还有什么办法可以做到呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-10 08:30:26

你有个打字错误

代码语言:javascript
复制
$users = \App\tempLogin::where('mobile','=',$mobile)->get();//you are getting $users

&回归

代码语言:javascript
复制
return $user->name;

所以把它改为

代码语言:javascript
复制
return $users->name;

但我仍然怀疑它将解决您的问题,因为您正在使用get & get返回一个collection,除非您在tempLogin模型中有一个关系。

所以我假设您在DB中有一个记录,它的mobile等于某个东西&如果是这样的话,您希望返回它的名称,那么就可以使用这个解决方案了。

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

然后再回来

代码语言:javascript
复制
return $users->name;

如果DB中有多个记录&您想要执行一个get,那么可以这样做

代码语言:javascript
复制
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->get();

这将只从表中选择name

现在你可以回来了

代码语言:javascript
复制
return $users;

它将是tempLogin模型的集合&如果您将它作为api使用,它将自动使用laravel请求进行JSON编码,如下所示

代码语言:javascript
复制
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]

或者,如果您想将记录作为数组返回,可以这样使用

代码语言:javascript
复制
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;

这将返回这样一个数组

代码语言:javascript
复制
[
 "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

&回归

代码语言:javascript
复制
return $user->name;

所以把它改为

代码语言:javascript
复制
return $users->name;

但我仍然怀疑它将解决您的问题,因为您正在使用get & get返回一个collection,除非您在tempLogin模型中有一个关系。

所以我假设您在DB中有一个记录,它的mobile等于某个东西&如果是这样的话,您希望返回它的名称,那么就可以使用这个解决方案了。

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

然后再回来

代码语言:javascript
复制
return $users->name;

如果DB中有多个记录&您想要执行一个get,那么可以这样做

代码语言:javascript
复制
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->get();

这将只从表中选择name

现在你可以回来了

代码语言:javascript
复制
return $users;

它将是tempLogin模型的集合&如果您将它作为api使用,它将自动使用laravel请求进行JSON编码,如下所示

代码语言:javascript
复制
[{"name":'YOUR_NAME_OF_THE_RECORD'},{"name":'YOUR_NAME_OF_THE_RECORD'}]

或者,如果您想将记录作为数组返回,可以这样使用

代码语言:javascript
复制
$users = \App\tempLogin::select(['name'])->where('mobile','=',$mobile)->pluck('name')->all();
return $users;

这将返回这样一个数组

代码语言:javascript
复制
[
 "YOUR_NAME_OF_THE_RECORD",
 "YOUR_NAME_OF_THE_RECORD",
]
票数 1
EN

Stack Overflow用户

发布于 2016-10-10 08:23:08

您正在尝试使用未定义的$user变量。您应该遍历集合以获得单个用户:

代码语言:javascript
复制
foreach ($users as $user) {
    echo $user->name;
}
票数 0
EN

Stack Overflow用户

发布于 2016-10-10 08:24:08

通常,您可以循环如下所示的集合项:

代码语言:javascript
复制
$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集合,请按以下方式更改查询:

代码语言:javascript
复制
$users = App\tempLogin::where('mobile','=',$mobile)->toArray();

然后您可以这样访问它:

代码语言:javascript
复制
foreach($users as $user)
{
    // now the $user contains an array containing each row data.
    $name = $user["name"];
}

如果您想访问单个用户:

代码语言:javascript
复制
$user = App\tempLogin::where('mobile','=',$mobile)->first();
$name = $user->name;

这将向您获取第一个行(偏移量0,限制1)。您需要指定获得所需的第一行的顺序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39953094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档