【问题标题】:laravel | eloquent foreach not working拉拉维尔 |雄辩的 foreach 不起作用
【发布时间】:2017-09-02 10:11:09
【问题描述】:

我正在尝试从我的用户表中检索所有非管理员用户。 像这样

$agents = User::where('is_admin','=', 'false')->get();

//didn't work
foreach ($agents as $agent=>$value) 
{
    echo "{$agent}=>{$value}"."<br>";
}

//tried dumping
dd($agents);

但它不起作用,所以我尝试转储变量以检查它是否有任何结果,我现在有一个非管理员:这是输出

Collection {#219 ▼
#items: array:1 [▼
    0 => User {#222 ▼
      #casts: array:1 [▶]
      #fillable: array:6 [▶]
      #hidden: array:2 [▶]
      #connection: null
      #table: null
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:10 [▶]
      #original: array:10 [▶]
      #dates: []
      #dateFormat: null
      #appends: []
      #events: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #visible: []
      #guarded: array:1 [▶]
      #rememberTokenName: "remember_token"
    }
  ]
}

请帮忙

【问题讨论】:

  • 您要打印什么...您在这里返回一个集合...您的表中有多少非管理员用户?而且你不能回显集合,回显仅用于简单的东西,字符串和整数等
  • @lewis4u 我正在尝试获取所有非管理员的详细信息。我目前有一个非管理员,但这个数字会增加。我想使用 foreach 打印它们

标签: php laravel foreach eloquent laravel-5.4


【解决方案1】:

如果您有类似 $items = items::all(); 的查询,但您想要从集合中获取特定值,例如 $items-&gt;barcode,该怎么办?

在尝试 dd($items) 时,项目以数组形式返回,这需要我知道每个 ID 才能获得适当的结果($items[id]-&gt;barcode)

我猜答案是有一个 foreach 循环?

【讨论】:

    【解决方案2】:
    $agents = User::where('is_admin','=', 'false')->pluck('value', 'agent'); 
    
    foreach ($agents as $agent=>$value) {
    echo "{$agent}=>{$value}"."<br>";
    }
    

    使用 pluck 您会将对象转换为数组,因此您可以通过 key =&gt; value 以您想要的方式使用 foreach。

    如果您需要访问模型的其他属性,则需要执行以下操作:

    $agents = User::where('is_admin','=', 'false')->get(); 
    
    foreach ($agents as $agent) {
    echo "{$agent->id}=>{$agent->name}"."<br>";
    }
    

    这样你只需要使用$agent-&gt;加上你想要的属性。

    【讨论】:

    • 使用 pluck 返回一个集合,而不是一个数组。 (来自 Laravel 5.3 版^)
    • @lewis4u 它将返回带有数组的集合,而不是带有对象的集合。
    • @BigBoss 您的方法有效,尽管我必须在 pluck 中专门传递字段名称。有没有在 pluck 中指定所有字段而不指定它们?
    • @SapneshNaik 所有字段都在那里。你只需要给他们看......像 {{ $agent->name }}, {{ $agent->address }} 制作一个表格或一些引导网格
    • @lewis4u 他指出他只是在尝试,以便使用正确的数据设置视图。
    【解决方案3】:

    尝试使用此代码来回显有关所有非管理员的信息:

    $agents = User::where('is_admin','=', 'false')->get();
    
    foreach ($agents as $agent) 
    {
        foreach($agent as $property => $value) {
            echo "{$property} => {$value}"."<br>";
        }
        echo "<br/>----------------------<br/>";
    }
    

    【讨论】:

      【解决方案4】:

      你的控制器应该是这样的:

      public function index() {
      
          $agents = User::where('is_admin','=', 'false')->get();
          return view('viewfile', compact('agents'));
      }
      

      然后在该视图文件中在刀片视图中创建 foreach 循环

      @foreach ($agents as $agent)
           {{ $agent->name }}
      @endforeach
      

      【讨论】:

      • 在我确认它在我的控制器(使用 foreach)中按预期打印后,我试图将变量传递给视图
      • 是的,我会尝试,我只是想确保在将数据传递给我的视图之前我有正确的数据。我想知道为什么它在控制器中不起作用?
      • 尝试在控制器中使用 print_r() 或 var_dump()
      【解决方案5】:

      这里的$agentsStd Class object array。所以访问它的元素试试这个:

      foreach ($agents as $agent) 
      {
          $agent->name;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-24
        • 2018-02-25
        • 1970-01-01
        • 2021-06-02
        • 1970-01-01
        • 2016-03-19
        • 2019-04-13
        • 1970-01-01
        相关资源
        最近更新 更多