【问题标题】:Laravel ::all() command only returns 1 recordLaravel ::all() 命令只返回 1 条记录
【发布时间】: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 将在第一个循环中停止执行

标签: php mysql laravel web eloquent


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2016-05-22
      相关资源
      最近更新 更多