我有一系列的 ids [1,1,2,1,1,1]
当我使用where-in时,不要重复我得到的数据 [1,2]
只是,如何让它变得 [1,1,2,1,1,1]
同样的顺序?
$selected_tasknotes_persons_made_comment = tasksNote::where("noted_task", request()->task_id )->get()->pluck('user_id');
//$selected\u tasknotes\u persons\u made\u comment=[1,1,2,1,1,1]
$persons_gave_notes = User::whereIn('id', $selected_tasknotes_persons_made_comment )->get();
2条答案
按热度按时间8ljdwjyq1#
根据你的询问
User::whereIn('id', $selected_tasknotes_persons_made_comment )->get()
这意味着它将返回唯一性结果,如果要获取重复记录,请按照以下说明操作:您可以在laravel中执行原始查询,以使用
UNION ALL
```$sql_query= 'SELECT u.*
FROM User u
JOIN ( SELECT 1 AS id UNION ALL SELECT 1 AS id
UNION ALL SELECT 2 AS id
UNION ALL SELECT 1 AS id
UNION ALL SELECT 1 AS id
UNION ALL SELECT 1 AS id
) i ON i.id= u.id';
$results = DB::select($sql_query);
jgzswidk2#
在sql中,查询可能如下所示:
怎么回事
IN(1,1,2,1,1,1)
在sql中的意思是:如果表中只有一个id=1的行,则只返回该行。它不会乘以为该行筛选的次数。
另请注意,通常(按惯例)列
id
在表中是唯一的,因此可能只有一行id=1和一行id=2。此外,在sql表中是“无序集”,在应用
order by
条款。简言之,您所期望的是sql根本无法做到的事情。
您可以将数组值插入到一个表(或“派生表”)中,该表中每行有一个值(即示例中的6行),然后将该值与源数据联接,然后您将获得更多的行。例如