首页 > 解决方案 > 如何在 ->get() 查询后将一组字段存储在变量中

问题描述

以下是我的查询,它可能输出不止一行。我需要将 user_id 字段存储在下面 $send_user_id 变量的每一行中,以便在刀片中使用 foreach 循环。我目前收到(尝试获取非对象的属性)错误。

$j_request = DB::table('grpusrs')
            ->join('users', 'users.id', '=', 'grpusrs.user_id')
            ->join('groups', 'grpusrs.group_id', '=', 'groups.id')
            ->where('groups.owner_id', $user_id)
            ->where('grpusrs.join_request', 1)
            ->get();

      $send_user_id = $j_request->user_id;

此查询还连接两个表,那么如何指定具有必填字段的表?(即我想要'Grpusrs'表中的user_id不在'Groups'表中)

标签: phplaravel

解决方案


如果您需要检索多个user_id,您可以遍历$j_request对象并收集user_id数组中的每一个。

$j_request = DB::table('grpusrs')
            ->join('users', 'users.id', '=', 'grpusrs.user_id')
            ->join('groups', 'grpusrs.group_id', '=', 'groups.id')
            ->where('groups.owner_id', $user_id)
            ->where('grpusrs.join_request', 1)
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();

$send_user_id = [];

$j_request->each(function($item) use ($send_use_id){
    $send_user_id[] = $item->user_id;
});

如果您只需要一个user_id,您应该在查询中更加“精确”(只获得一条记录)。之后,您可以user_id简单地使用$j_request->user_id


推荐阅读