php - 将 2 个集合合并到另一个集合中,并在两个 Laravel 中具有相同的值

标签 php mysql laravel

嗨,我在 Laravel 中有 2 个对象,如下所示:

{
user_id: 34993,
price: "20000.00"
},
{
user_id: 35153,
price: "20000.00"
},
{
user_id: 35168,
price: "20000.00"
},

第二个是用户对象:

[
{
id: 34993,
uuid: "8f8f2ba3-0d51-4fdb-83cd-6e13a0f2cc13",
fullname: "َUsersName",
email: null,
created_at: "2020-01-15 14:42:45",
updated_at: "2020-01-15 14:43:58",
email_verified_at: null,
gender: 2,
title: null
},
{
id: 35153,
uuid: "8f8f2ba3-0d51-4fdb-83cd-6e13a0f2cc13",
fullname: "َUsersName",
email: null,
created_at: "2020-01-15 14:42:45",
updated_at: "2020-01-15 14:43:58",
email_verified_at: null,
gender: 2,
title: null
},
{
id: 35168,
uuid: "8f8f2ba3-0d51-4fdb-83cd-6e13a0f2cc13",
fullname: "َUsersName",
email: null,
created_at: "2020-01-15 14:42:45",
updated_at: "2020-01-15 14:43:58",
email_verified_at: null,
gender: 2,
title: null
},

那么现在我如何将价格添加到第二个对象中的用户对象中,或者如何将它们与第一个对象中的 user_id 的键和第二个对象的 id 合并,因为它们是相同的?我的代码如下:

    {

        $data = DB::table('users_tracker')->where('user_id','>','34676')->where('action','LIKE','%gatewayResponse%')
            ->leftJoin('gateway_transactions',function($join){
                $join->on('gateway_transactions.ip','=','users_tracker.ip');
            })
            ->where('gateway_transactions.status','=','SUCCEED')
            ->select('user_id','price')
            ->distinct()
            ->get();
//        return $data;

       $user_id = $data->pluck('user_id');
        $users = User::whereIn('id',$user_id)->get();
        return $users;
    }

最佳答案

使用User加入 users_tracker,如下所示:

    User::join('users_tracker', 'users_tracker.user_id', '=', 'users.id')
              ->where('users_tracker.user_id','>','34676')
              ->where('users_tracker.action','LIKE','%gatewayResponse%')
              ->leftJoin('gateway_transactions',function($join){
                $join->on('gateway_transactions.ip','=','users_tracker.ip');
               })
              ->where('gateway_transactions.status','=','SUCCEED')
              ->select('*', 'users_tracker.user_id', 'gateway_transactions.price')
              ->groupBy('users_tracker.user_id', 'gateway_transactions.price')
              ->get();

您似乎遇到了 only_full_group_by 问题。

在 config/database.php 中设置 sql_mode

'mysql' => [
  ...
   'modes' => [
       'STRICT_ALL_TABLES',
       'ERROR_FOR_DIVISION_BY_ZERO',
       'NO_ZERO_DATE',
       'NO_ZERO_IN_DATE',
       'NO_AUTO_CREATE_USER',
   ],
 ];

请记住清除您的配置缓存:

php artisan config:clear
php artisan optimize

关于php - 将 2 个集合合并到另一个集合中,并在两个 Laravel 中具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59802229/

相关文章:

php - 如何将数据从单个表单插入到 codeigniter 框架中的多个表? - 以下方法无效

php - 如何检查句子中是否存在关键字集?

php - 我的条件不起作用(准备好的查询和 POST 方法 + isset 函数)

php - 在 codeigniter 中使用 csrf 和 jquery cookie 登录时出错

php - Laravel 4 虚拟主机和 mod 重写设置

laravel - 如何在 Laravel 5.2 中使用真正的转义字符串

php - 是否可以在 Twig 中定义内联模板?

PHP 问题连接 php 和 .mdb 与 pdo-odbc

mysql - 在mysql中有效地在列中获取大量逗号分隔值的逗号分隔字符串

javascript - 为相似的 url 添加基于 URL 的事件导航类