【问题标题】:laravel ->get() not returning relations properlylaravel ->get() 没有正确返回关系
【发布时间】:2018-07-11 03:37:26
【问题描述】:

我有一个在我的索引控制器中工作的条件查询,它应该返回雄辩的关系,但并不总是返回可访问的数组索引:

$customers = Customer::with('orders', 'regions')->orderBy('created_at', 'desc')->whereHas('regions', function($query)
    {
        $user_id = Auth::user()->id;
        $current_user = User::with('roles')->where('id', '=', $user_id)->latest()->first();
        $role_name = $current_user->roles[0]->name;
        if($role_name == 'admin_master'){$query->whereIn('region', array(11, 7));}
    }
    )->get(); 

问题是相关数组并不总是可以访问,例如 order[1] 并且在我 dd($customers); 时显示奇怪;

#relations: array:5 [▼
    "orders" => Collection {#442 ▼
      #items: array:2 [▼
        0 => Order {#446 ▶}
        1 => Order {#447 …25}
      ]
    }

【问题讨论】:

  • 尝试first 而不是getget 返回一个集合。
  • 我需要一个集合来返回所有客户,而不仅仅是我索引中的一个
  • 那就试试这个get()->toArray()
  • 成功了,你能把答案作为答案,我可以标记为正确

标签: arrays laravel eloquent conditional


【解决方案1】:

对于未来的用户,get 方法以集合的形式获取结果。您可以在其上链接toArray() 方法以将其转换为数组。

所以它会像$query->get()->toArray()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 2021-11-17
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多