【问题标题】:Laravel Eloquent ORM - How to get the all the properties of afrom/of a collection in a array?Laravel Eloquent ORM - 如何获取数组中集合的所有属性?
【发布时间】:2018-01-17 17:04:55
【问题描述】:
$user_emails = ["email_1@domain.com", "email_2@domain.org"];

$users = Users::whereIn("email", $user_emails);

用户表还为每个用户提供了一个phone 列。将电话号码的list/array 作为数组获取的最佳方法是什么?

$users->all()->phone(); // Like (which is not correct)

【问题讨论】:

    标签: laravel model eloquent


    【解决方案1】:

    尝试使用get() 喜欢:

    $users = Users::whereIn("email", $user_emails)->get(['phone'])->toArray();
    

    或者pluck()也喜欢:

    $users = Users::whereIn("email", $user_emails)->pluck('phone')->all();
    

    希望这会有所帮助。

    【讨论】:

    • 第二种方法更好
    【解决方案2】:

    get()可以获取所有列数据

    示例:

    $user = $user::where('email', $user_emails)->get();
    

    您可以使用foreach循环方法获取列表。

    【讨论】:

    • 以数组形式获取电话号码的列表/数组,它将返回用户集合,而不是 OP 搜索的内容..
    • 由于 $user_emails 是一个数组,这将不起作用。这就是我使用::whereIn 的原因。我本可以执行一个 for 循环并将每个用户的电话号码附加到一个数组中,但这效率不高,因为我必须为每个用户进行一次查询。
    【解决方案3】:

    使用pluck 方法获取特定列的值,然后在返回的Collection 对象上使用toArray 以数组形式获取结果。

    $phoneNumbers = Users::whereIn("email", $user_emails)->pluck('phone')->toArray();
    

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 2015-03-02
      • 2019-01-12
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2020-01-15
      • 2018-02-28
      相关资源
      最近更新 更多