удалить отдельные данные MySQL и Laravel - PullRequest
0 голосов
/ 12 декабря 2018

привет, у меня есть проект laravel, и у меня есть эта модель

User_attendance

User

, и у меня есть это отношение внутри User

public function getAttendance()
{
    return $this->hasMany('App\User_attendance','user_attendance_user_id','id');
}

теперь в User_attendance есть данные дублирования, подобные этому

9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-27 17:45:48
9238<><> 2018-11-28 17:35:00
9238<><> 2018-11-29 17:44:34
9238<><> 2018-12-08 17:18:12
9238<><> 2018-12-08 17:18:12

сейчас 9238<><> 2018-11-27 17:45:48 имеет 12 записей, как я могу выполнить запрос внутри laravel или mysql, чтобы удалить 11 записей и оставить только 1, я сделал это

$users = User::limit(30)->get();
foreach($users as $u)
{
    foreach($u->getAttendance as $attendance)
    {
        echo $attendance->user_attendance_user_id . "<><> ".$attendance->created_at ."<br />";
    }
}

я хочу удалить дублированиеданные и оставить только одно записанное спасибо

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Если вы хотите удалить записи в базе данных, вы можете выполнить запрос MySQL, например

DELETE t1 FROM `User_attendance` as f
        INNER JOIN
    `User_attendance` as s 
WHERE
    f.id < s.id AND f.time = s.time AND f.user_attendance_user_id = s.user_attendance_user_id;

. Это позволит удалить дубликаты записей из вашей таблицы.Возможно, вы захотите убедиться, что вставляете новую строку только в том случае, если она уникальна, поэтому сделайте проверку в своем коде (и сделайте в столбце комбинацию идентификатора пользователя и времени (т.е. уникальный индекс) в базе данных)

0 голосов
/ 12 декабря 2018

Используйте ключевое слово DISTINCT или GROUP BY

Пример:

SELECT DISTINCT (столбец), column1, column2, ... FROM table_name;

SELECT * From User_attendanceGROUP BY user_attendance_user_id, созданный_ат;

0 голосов
/ 12 декабря 2018

Используйте двойную группу, например:

DB::table('users')
            ->select('*')
            ->groupBy('user_attendance_user_id','created_at')
            ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...