Для Query Builder:
Вы можете использовать GROUP_CONCAT
для строки. А затем используйте map
в результате, чтобы преобразовать его в массив.
$data = DB::table("campania_post AS pt")
->join("campania AS c","c.id","=","pt.campania_id")
->where("c.manager_id", "=", $user->id)
->leftJoin("files AS f","f.id","=","c.avatar")
->where("pt.status", "=", 0)
->select("c.id", "c.nombre", "c.avatar", "f.name", "c.created_at", DB::raw("GROUP_CONCAT(f.id, ',') AS file_picture"))
->groupby("c.id")
->distinct()
->get();
$data->map(function($q) {
$q->file_picture = explode(',', $q->file_picture);
return $q;
});