代码之家  ›  专栏  ›  技术社区  ›  S.M_Emamian

如何在Laravel中拥有一组对象?

  •  0
  • S.M_Emamian  · 技术社区  · 1 年前

    这是我的orm查询:

    $result = WpUser::select('wp_users.*')
            ->join('wp_usermeta as role_meta', 'wp_users.ID', '=', 'role_meta.user_id')
            ->where('role_meta.meta_key', '=', 'wp_capabilities')
            ->where('role_meta.meta_value', 'LIKE', '%'.$role.'%')
            ->get();
    

    我想将这些结果与其他数组合并:

    $users = array_merge($final, $result);
    

    但我得到了这个错误:

    array_merge():参数#2的类型必须为array, Illuminate\Database\Eloquent\Collection give”

    我想要一个对象数组。好的,我可以用 toArray(), 但它将我的对象转换为数组!

    1 回复  |  直到 1 年前
        1
  •  3
  •   Roman Spiridonov    1 年前

    在对ORM执行查询后,您将获得 Eloquent Collection ,它包装了一个数组并为其添加了一些功能。如果你想获得一个数组,只需使用 toArray 在Collection对象上。例如:

    $result = WpUser::select('wp_users.*')
            ->join('wp_usermeta as role_meta', 'wp_users.ID', '=', 'role_meta.user_id')
            ->where('role_meta.meta_key', '=', 'wp_capabilities')
            ->where('role_meta.meta_value', 'LIKE', '%'.$role.'%')
            ->get();
    
    $resultArray = $result->toArray();
    
    $users = array_merge($final, $result);
    

    或者更好地使用Collection来处理和使用 merge 方法:

    // ...
    $usersCollection = $result->merge($final);
    
    推荐文章