Laravel ::all() 命令只返回 1 条记录

Posted

技术标签:

【中文标题】Laravel ::all() 命令只返回 1 条记录【英文标题】:Laravel ::all() command only returns 1 record 【发布时间】:2021-12-28 09:10:20 【问题描述】:

大家好,我正在尝试使用 $pools = \App\pool::all();从我的数据库中的表中获取所有记录 数据库目前有3条记录,但只返回第一条记录

foreach($pools as $pool)
    return $pool;

"poolId":1,"poolName":"TestPool","pAdminId":70,"poolStatus":1,"created_at":"2021-11-17 08:06:57","updated_at":"2021-11-17 08:06:57"

在使用 ::all() 之前,这不是问题 使用时也是如此

$pools = \App\Pool::where('pAdminId',$user->id)->get();

$user->id 返回 70,这也发生在我的另一个 Poolmembers 表中,两者都是使用 php artisan make:model 命令创建的,并回滚一次以更改数据类型,然后再次迁移。

pool 的模型如下所示


namespace App;

use Illuminate\Database\Eloquent\Model;

class Pool extends Model

    //
    protected $primaryKey = 'poolId';
    protected $fillable = ['poolId', 'poolName', 'pAdminId', 'poolStatus'];

任何帮助将不胜感激

谢谢

【问题讨论】:

请分享你的模型 Pool <?php namespace App; use Illuminate\Database\Eloquent\Model; class Pool extends Model // protected $fillable = ['poolId', 'poolName', 'pAdminId', 'poolStatus']; 的模型如下所示 @armand 用代码编辑问题,不要放在 cmets 中 刚刚更新 您在 foreach 循环中使用 return 将在第一个循环中停止执行 【参考方案1】:

Armand,您在 for 循环中使用了 return。 由于它只显示一条记录,因为它返回数组的第一个索引。 试试这个

foreach($pools as $pool)
    
echo $pool->poolId; //it will return id of each record;

   

【讨论】:

【参考方案2】:

你只能在一个函数中得到一个 return 语句,所以如果你把 return 放在循环中,函数的执行就会停止。 https://www.php.net/manual/en/function.return.php

foreach($pools as $pool) 
    echo $pool->poolId;

如果您想跳过或中断 PHP 中的迭代,您可以在循环中使用 continuebreak

【讨论】:

以上是关于Laravel ::all() 命令只返回 1 条记录的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4:Input::all() 使用 $.ajax POST 不返回任何数据

Laravel Get() Cursor() Chunk() Offset()

laravel 数据库查询的一些函数意义(未完)

如何从不同的表中计算laravel

Laravel 8 all() 函数不会将 db 值映射到模型属性

Laravel Artisan 控制台命令无法检索模型集合